问题是:我还没有找到一个有效的解决方案,允许我在我的recyclerview适配器中使用onLongClickListener
我知道我的选择似乎要么是实现一个接口,要么是使用lambda,然而我一直在尝试我能找到的一切,但没有一个是有效的。
我在以下地方尝试过解决方案:
项目Onclick RecyclerView Kotlin Android
科特林的RecyclerView onClick
如何将点击监听器添加到我的回收器视图(Android kotlin)
静态编程语言
回收站卡项目OnClick静态编程语言
以及我在谷歌上搜索“点击适配器上的kotlin回收器视图”时能找到的其他一切
每种解决方案都会出现不同的错误,但主要的收获是它们都不起作用,这告诉我,从一开始,我的适配器代码可能有问题。
我得到的一个错误示例:如果我试图在TaskViewHolder
的bind
函数中使用setOnClickListener
,我会得到以下错误:
错误的返回类型,期望布尔,收到单位
没有传入列表,因为我使用带有房间数据库的viewmodel中的submitList
适配器代码基于房间外的视图代码
我有过
适配器代码:
class TaskRvAdapter : ListAdapter<Task, TaskRvAdapter.TaskViewHolder>(TaskComparator()) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskViewHolder {
return TaskViewHolder.create(parent)
}
override fun onBindViewHolder(holder: TaskViewHolder, position: Int) {
val current = getItem(position)
holder.bind(current.task)
}
class TaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val taskItemView: TextView = itemView.findViewById(R.id.task_rv_item)
fun bind(text: String?) {
taskItemView.text = text
}
companion object {
fun create(parent: ViewGroup): TaskViewHolder {
val view: View = LayoutInflater.from(parent.context)
.inflate(R.layout.task_rv_item, parent, false)
return TaskViewHolder(view)
}
}
}
class TaskComparator : DiffUtil.ItemCallback<Task>() {
override fun areItemsTheSame(oldItem: Task, newItem: Task): Boolean {
return oldItem === newItem
}
override fun areContentsTheSame(oldItem: Task, newItem: Task): Boolean {
return oldItem.task == newItem.task
}
}
}
请尝试使用正确格式化的代码
fun bind(text: String?) {
taskItemView.text = text
itemView.setOnClickListener {
Log.i("TaskRvAdapter", "item clicked: "+text)
}
itemView.setOnLongClickListener{
Log.i("TaskRvAdapter", "item long clicked: "+text)
return@setOnLongClickListener true
}
}
我正在寻找在Android中使用列表适配器和Recyview适配器的区别。关于性能的任何不同,使用它们的利弊。
如何从3个按钮中选择只有1个按钮?我设法设置/取消设置所选按钮的背景色。但无法选择唯一一个选定的按钮。 示例btn1、btn2、btn3。当我选择btn1时,btn1背景颜色发生变化,btn2和btn3不受影响。之后,当我再次选择btn2时,btn1背景色未设置,btn2背景色更改。因此此时选择btn2而不选择btn1和btn3。 下面是我的示例代码:
下面你可以找到fragment类,我在那个片段中有一个RecycerView,当用户长时间按下RecycerView中的一个项目时,我试图打开一个上下文菜单。 我能够显示上下文菜单,并为一个片段的单个实例获取选定项的位置,当我滑动到下一个片段时,我得到了相同的索引位置,当我进一步调试时,我发现我得到了前一个片段上的RecycerView的相同适配器。当我记录RecycerView的适配器大小时,可
我有一个父回收器视图,其中包含一个水平回收器视图作为其项目。在其中,我将显示分类视频。当我开始滚动水平回收器视图时,应用程序崩溃。 错误是: 我的代码是category类 垂直适配器 水平适配器
我试图使用picasso库将url加载到imageView,但无法获得来正确使用picasso库。