Last active
September 8, 2019 19:46
-
-
Save gabrielbmoro/0d7d7a6a5278bbe051043266c2c4365f to your computer and use it in GitHub Desktop.
GeneralBaseAdapter is used for any recyclerview list as adapter.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
GeneralBaseAdapter using Generics