I use ListAdapter in my RecyclerView Adpater like below code question is how can I get item object from my view by it's row position. I try to write a function in my adapter to get item object by it's position called from view but because I don't have any list in my adapter I can't access it to get it's item object value
class QuotesRvAdapter(val mListener : OnQuotesRvListListener):
ListAdapter<TblQuote, QuotesRvAdapter.ViewHolder>(TaskDiffCallback())
{
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
return ViewHolder(inflater.inflate(R.layout.row_quote, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(getItem(position),mListener)
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(quote: TblQuote, mListener: OnQuotesRvListListener) {
itemView.txtQuoteRow.text = quote.toString()
itemView.ivDeleteRow.setOnClickListener { mListener.onDeleteQuote(quote) }
itemView.setOnClickListener{ mListener.onPrepareForUpdate(quote) }
}
}
class TaskDiffCallback : DiffUtil.ItemCallback<TblQuote>() {
override fun areItemsTheSame(oldItem: TblQuote, newItem: TblQuote): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: TblQuote, newItem: TblQuote): Boolean {
return oldItem == newItem
}
}
interface OnQuotesRvListListener{
fun onDeleteQuote(ob: TblQuote)
fun onPrepareForUpdate(ob: TblQuote)
}
}
There is no method available to access your data object, you have to maintain manually.
class QuotesRvAdapter(val mListener : OnQuotesRvListListener):
ListAdapter<TblQuote, QuotesRvAdapter.ViewHolder>(TaskDiffCallback())
{
public YourDataClassName getItemData ( int position)
{
return getItem(position)
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var myDataObj: YourDataClassName;
fun bind(quote: TblQuote, mListener: OnQuotesRvListListener, myData: YourDataClassName) {
myDataObj = myData;
itemView.txtQuoteRow.text = quote.toString()
itemView.ivDeleteRow.setOnClickListener { mListener.onDeleteQuote(quote) }
itemView.setOnClickListener{ mListener.onPrepareForUpdate(quote) }
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.