Skip to content

Instantly share code, notes, and snippets.

@Shahroz16
Created September 28, 2019 21:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shahroz16/dfa93fc3495be41a09370fd1ca20ea84 to your computer and use it in GitHub Desktop.
Save Shahroz16/dfa93fc3495be41a09370fd1ca20ea84 to your computer and use it in GitHub Desktop.
ArrayAdapter for Recycler View
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.annotation.IdRes
import androidx.annotation.LayoutRes
import androidx.recyclerview.widget.RecyclerView
class RecyclerViewArrayAdapter<T>(@LayoutRes var resource: Int,
var objects: List<T>,
@IdRes var textViewResourceId: Int = 0
) : RecyclerView.Adapter<RecyclerViewArrayAdapter.ViewHolder>() {
class ViewHolder(view: View, textViewResourceId: Int) : RecyclerView.ViewHolder(view) {
var textView: TextView =
when (textViewResourceId) {
0 -> view as TextView
else -> view.findViewById(textViewResourceId)
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(resource, parent, false)
return ViewHolder(view, textViewResourceId)
}
override fun getItemCount(): Int {
return objects.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = objects[position]
if (item is CharSequence) {
holder.textView.text = item
} else {
holder.textView.text = item.toString()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment