Skip to content

Instantly share code, notes, and snippets.

@gabrielbmoro
Last active September 8, 2019 19:46
Show Gist options
  • Save gabrielbmoro/0d7d7a6a5278bbe051043266c2c4365f to your computer and use it in GitHub Desktop.
Save gabrielbmoro/0d7d7a6a5278bbe051043266c2c4365f to your computer and use it in GitHub Desktop.
GeneralBaseAdapter is used for any recyclerview list as adapter.
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import com.gabrielbmoro.programmingchallenge.BR
import androidx.annotation.LayoutRes
abstract class GeneralBaseAdapter<T> : RecyclerView.Adapter<GeneralBaseAdapter.GeneralViewHolder>() {
var elements: ArrayList<T>? = null
@LayoutRes
abstract fun layoutResourceId(): Int
override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): GeneralViewHolder {
val view = DataBindingUtil.inflate<ViewDataBinding>(LayoutInflater.from(viewGroup.context), layoutResourceId(), viewGroup, false).root
return GeneralViewHolder(view)
}
override fun onBindViewHolder(generalViewHolder: GeneralViewHolder, i: Int) {
DataBindingUtil.getBinding<ViewDataBinding>(generalViewHolder.itemView)?.apply {
elements?.get(i)?.let{
setVariable(BR.viewModel, it)
}
}
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getItemCount(): Int {
return elements?.size ?: 0
}
open class GeneralViewHolder(view : View) : RecyclerView.ViewHolder(view)
}
@gabrielbmoro
Copy link
Author

GeneralBaseAdapter using Generics

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment