Skip to content

Commit 4064f38

Browse files
committed
added functions for managing list: add item, remove item ...
1 parent 3658050 commit 4064f38

File tree

4 files changed

+57
-13
lines changed

4 files changed

+57
-13
lines changed

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,29 @@ SimpleRecyclerViewAdapter<DataType> adapter = new SimpleRecyclerViewAdapter<>();
7474
No casting need.
7575
_I suggest you to use Android Studio code completion, to implement **onBindViewHolder()**._
7676

77+
### Adding items to the list
78+
```kotlin
79+
adapter.addItem(item)
80+
```
81+
82+
83+
### Update items in the list
84+
```kotlin
85+
adapter.setItem(item, position)
86+
```
87+
88+
### Removing items from the list
89+
```kotlin
90+
adapter.removeItem(position)
91+
```
92+
93+
### Restoring previously removed item to the list
94+
```kotlin
95+
adapter.restoreItem(item, position)
96+
```
97+
98+
Notice that these calls might require public _adapter_ object/variable
99+
77100
### Troubleshooting
78101
Naturally, the adapter needs an **item_layout**, an **list** and an **onBindViewHolder()** implementation to display the list on screen.
79102
NONE OF THIS ARE OPTIONAL, so not setting them may lead to runtime app crash.

simplerecyclerviewadapter/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ android {
99
defaultConfig {
1010
minSdkVersion 14
1111
targetSdkVersion 28
12-
versionCode 3
13-
versionName "0.1.2"
12+
versionCode 4
13+
versionName "0.1.3"
1414

1515
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1616

simplerecyclerviewadapter/src/main/java/io/github/horaciocome1/simplerecyclerviewadapter/RecyclerViewUtils.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,14 @@
1717
package io.github.horaciocome1.simplerecyclerviewadapter
1818

1919
import android.view.View
20-
import android.widget.TextView
21-
import androidx.recyclerview.widget.RecyclerView
2220

2321
fun <T : View?> SimpleRecyclerViewAdapter.ViewHolder.findViewById(viewId: Int): T {
2422
return this.itemView.findViewById<T>(viewId)
25-
}
23+
}
24+
25+
fun <T> sdvjoiidfnvs(adapter: SimpleRecyclerViewAdapter<T>, item: T) {
26+
adapter.addItem(item)
27+
adapter.setItem(item, 13)
28+
adapter.removeItem(13)
29+
adapter.restoreItem(item, 13)
30+
}

simplerecyclerviewadapter/src/main/java/io/github/horaciocome1/simplerecyclerviewadapter/SimpleRecyclerViewAdapter.kt

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,43 @@ import android.view.ViewGroup
2222
import androidx.recyclerview.widget.RecyclerView
2323
import androidx.recyclerview.widget.RecyclerView.Adapter
2424

25+
const val NO_ITEM_LAYOUT = -1
26+
2527
class SimpleRecyclerViewAdapter<DataType> : Adapter<SimpleRecyclerViewAdapter.ViewHolder>() {
2628

27-
var itemLayout: Int = -1
28-
var list: List<DataType> = ArrayList()
29+
var itemLayout: Int = NO_ITEM_LAYOUT
30+
var list = ArrayList<DataType>()
2931
private var onBind = { _: ViewHolder, _: DataType -> Unit}
3032

3133
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
3234
val view = LayoutInflater.from(parent.context).inflate(itemLayout, parent, false)
3335
return ViewHolder(view)
3436
}
3537

36-
override fun getItemCount(): Int {
37-
return list.size
38+
override fun getItemCount(): Int { return list.size }
39+
40+
override fun onBindViewHolder(holder: ViewHolder, position: Int) { onBind(holder, list[position]) }
41+
42+
fun setOnBindViewHolder(onBind: (SimpleRecyclerViewAdapter.ViewHolder, DataType) -> Unit) { this.onBind = onBind }
43+
44+
fun addItem(item: DataType) {
45+
list.add(item)
46+
notifyItemInserted(list.size)
47+
}
48+
49+
fun setItem(item: DataType, position: Int) {
50+
list[position] = item
51+
notifyItemChanged(position)
3852
}
3953

40-
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
41-
onBind(holder, list[position])
54+
fun removeItem(position: Int) {
55+
list.removeAt(position)
56+
notifyItemRemoved(position)
4257
}
4358

44-
fun setOnBindViewHolder(onBind: (SimpleRecyclerViewAdapter.ViewHolder, DataType) -> Unit) {
45-
this.onBind = onBind
59+
fun restoreItem(item: DataType, position: Int) {
60+
list.add(position, item)
61+
notifyItemInserted(position)
4662
}
4763

4864
class ViewHolder(view: View) : RecyclerView.ViewHolder(view)

0 commit comments

Comments
 (0)