-
Notifications
You must be signed in to change notification settings - Fork 8
/
SingleTypeAdapter.kt
56 lines (42 loc) · 1.8 KB
/
SingleTypeAdapter.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package io.ditclear.bindingadapter
import android.content.Context
import android.databinding.DataBindingUtil
import android.databinding.ObservableArrayList
import android.databinding.ObservableList
import android.databinding.ViewDataBinding
import android.view.ViewGroup
/**
* description:SingleTypeAdapter
*
* Created by ditclear on 2017/10/3.
*/
open class SingleTypeAdapter<T>(context: Context, private val layoutRes: Int, list: ObservableArrayList<T>) : BindingViewAdapter<T>(context, list) {
init {
initSingleList()
}
protected fun initSingleList(){
list.addOnListChangedCallback(object : ObservableList.OnListChangedCallback<ObservableList<T>>() {
override fun onChanged(contributorViewModels: ObservableList<T>) {
notifyDataSetChanged()
}
override fun onItemRangeChanged(contributorViewModels: ObservableList<T>, i: Int, i1: Int) {
notifyItemRangeChanged(i, i1)
}
override fun onItemRangeInserted(contributorViewModels: ObservableList<T>, i: Int, i1: Int) {
notifyItemRangeInserted(i, i1)
}
override fun onItemRangeMoved(contributorViewModels: ObservableList<T>, i: Int, i1: Int, i2: Int) {
notifyItemMoved(i, i1)
}
override fun onItemRangeRemoved(contributorViewModels: ObservableList<T>, i: Int, i1: Int) {
if (contributorViewModels.isEmpty()) {
notifyDataSetChanged()
} else {
notifyItemRangeRemoved(i,i1)
}
}
})
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
BindingViewHolder(DataBindingUtil.inflate<ViewDataBinding>(mLayoutInflater, layoutRes, parent, false))
}