ViewHolder seems to be very helpful to access every view on a listview. I have found some code examples where there was a viewholder in an adapter listview (used in the getview function).
But when I attempt to implement a viewHolder in that function, Android Studio wants to import a recyclerview class (viewHolder) so I think it is not normal.
What I have tried is putting val viewHolder = RecyclerView.ViewHolder(convertView)
into getview function of my adapter. And then I have got import androidx.recyclerview.widget.RecyclerView ...
What I want to do is it possible nowadays?
Here is a sample code that I have found on the web and I am not able to do the same thing:
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
class MyCustomAdapter(context: Context, val items: List<String>) : BaseAdapter() {
private val layoutInflater = LayoutInflater.from(context)
override fun getCount(): Int {
return items.size
}
override fun getView(position: Int, view: View?, viewGroup: ViewGroup?): View? {
val viewHolder: ViewHolder
val rowView: View?
if (view == null) {
rowView = layoutInflater.inflate(R.layout.list_item, viewGroup, false)
viewHolder = ViewHolder(rowView)
rowView.tag = viewHolder
} else {
rowView = view
viewHolder = rowView.tag as ViewHolder
}
viewHolder.itemName.text = items[position]
return rowView
}
override fun getItem(position: Int): Any {
return 0
}
override fun getItemId(position: Int): Long {
return 0
}
private class ViewHolder(view: View?) {
val itemName = view?.findViewById(R.id.list_item_text_view) as TextView
}
}