Java Android kotlin-RecyclerView找出在活动/片段中单击的项目内部的确切内容
这是适配器:Java Android kotlin-RecyclerView找出在活动/片段中单击的项目内部的确切内容,java,android,android-recyclerview,kotlin,Java,Android,Android Recyclerview,Kotlin,这是适配器: class ToplistAdapter(val context: Context, private val users: MutableList<Toplist>, val itemClick: (Toplist) -> Unit) : RecyclerView.Adapter<ToplistAdapter.ViewHolder>(){ override fun onBindViewHolder(holder: ViewHolder, po
class ToplistAdapter(val context: Context, private val users: MutableList<Toplist>, val itemClick: (Toplist) -> Unit) : RecyclerView.Adapter<ToplistAdapter.ViewHolder>(){
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val user = users[position]
holder.percent.text = user.prozent
Picasso.get().load(user.image).into(holder.imagee)
holder.bind(users[position], context)
}
override fun getItemCount() = users.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.toplist, parent, false)
return ViewHolder(view, itemClick)
}
class ViewHolder(itemView: View?, val itemClick: (Toplist) -> Unit) : RecyclerView.ViewHolder(itemView!!){
val percent = itemView!!.text_percent
val imagee = itemView!!.image_view
fun bind(toplist: Toplist, context: Context){
itemView.setOnClickListener {
itemClick(toplist)
}
}
}
}
我知道如何设置onClicklistener-insideonBindViewHolder
和查找是否单击了text\u percent
或image\u view
,,但除了获取用户ID
等之外,我如何在片段内部执行此操作
提前谢谢
编辑:
请求的数据模型类:
data class Toplist(
val image: String,
val prozent: String,
val userid: Long
)
在适配器中创建ClickListener
open interface ClickListener {
fun onClick(position: Int)
}
然后实现您的适配器
class ToplistAdapter(val context: Context, private val users: MutableList<Toplist>, val listener: ClickListener) : RecyclerView.Adapter<ToplistAdapter.ViewHolder>(){
companion object {
var clickListener: ClickListener? = null
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
clickListener = listener
val user = users[position]
holder.percent.text = user.prozent
Picasso.get().load(user.image).into(holder.imagee)
holder.bind(users[position], context)
holder.imagee.setOnClickListener {
itemClick(users[position])
}
holder.imagee.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
if (clickListener != null)
clickListener?.onClick(position)
}
})
}
在适配器中创建ClickListener
open interface ClickListener {
fun onClick(position: Int)
}
然后实现您的适配器
class ToplistAdapter(val context: Context, private val users: MutableList<Toplist>, val listener: ClickListener) : RecyclerView.Adapter<ToplistAdapter.ViewHolder>(){
companion object {
var clickListener: ClickListener? = null
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
clickListener = listener
val user = users[position]
holder.percent.text = user.prozent
Picasso.get().load(user.image).into(holder.imagee)
holder.bind(users[position], context)
holder.imagee.setOnClickListener {
itemClick(users[position])
}
holder.imagee.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
if (clickListener != null)
clickListener?.onClick(position)
}
})
}
users.userid.toString()中的userid是未解析的引用,如何确定单击了text\u%还是text\u视图?为什么?我想你还没有完全理解我想要什么,我对这个问题做了一些编辑,并展示了数据模型,以防我把开放界面ClickListener放在哪里?我尝试了不同的地方,得到了一个错误:分类器“ClickListener”没有一个伴生对象,因此必须在这里初始化。还有:未解决的引用:itemClick我已经为此挣扎了好几个小时,我认为不可能找出片段中单击了什么item元素,而只是adapterview holder itemClick删除它是未解析的引用,我如何确定是否单击了文本百分比或文本视图?为什么?我想你还没有完全理解我想要什么,我对这个问题做了一些编辑,并展示了数据模型,以防我把开放界面ClickListener放在哪里?我尝试了不同的地方,得到了一个错误:分类器“ClickListener”没有一个伴生对象,因此必须在这里初始化。还有:未解决的引用:itemClick我已经为此苦苦挣扎了好几个小时,我认为不可能找出片段中单击了什么item元素,而只是adapterview holder itemClick删除它。使用onBindViewHolder onclick listener