Skip to content

Instantly share code, notes, and snippets.

@vorobeij
Created May 20, 2018 17:53
Show Gist options
  • Select an option

  • Save vorobeij/e66dba7b9c3ec821248242b8832ab435 to your computer and use it in GitHub Desktop.

Select an option

Save vorobeij/e66dba7b9c3ec821248242b8832ab435 to your computer and use it in GitHub Desktop.
Recycler view adapter
class GalleryAdapter(var items:List<DataHolder>) : Adapter<GalleryAdapter.ViewHolder>() {
override fun onBindViewHolder(holder: ViewHolder,
position: Int) {
TODO("not implemented") // File | Settings | File Templates.
}
override fun getItemCount(): Int = items.size
override fun onCreateViewHolder(parent: ViewGroup,
viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val view = inflater.inflate(layout.w_icon_label_checkbox, parent, false)
return ViewHolder(view)
}
class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {
var icon: ImageView? = v.v_icon
}
fun updateAppsList(list: List<DataHolder>) {
Timber.v("jsp updating apps list. New size: ${list.size}")
val diffRes = DiffUtil.calculateDiff(DiffDataCallback(items, list))
items = list
diffRes.dispatchUpdatesTo(this)
}
}
class DataHolder(var data:String)
class DiffDataCallback(var itemsOld: List<DataHolder>,
var itemsNew: List<DataHolder>
) : Callback() {
override fun areItemsTheSame(oldItemPosition: Int,
newItemPosition: Int): Boolean {
val itemOld = itemsOld[oldItemPosition]
val itemNew = itemsNew[newItemPosition]
return itemNew.data == itemOld.data
}
override fun areContentsTheSame(oldItemPosition: Int,
newItemPosition: Int): Boolean {
return true
}
override fun getOldListSize(): Int = itemsOld.size
override fun getNewListSize(): Int = itemsNew.size
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment