gpt4 book ai didi

android - 在 Android 中使用 Kotlin 在 RecyclerViewAdapter 中实现自定义接口(interface)

转载 作者:行者123 更新时间:2023-12-02 13:30:48 27 4
gpt4 key购买 nike

我在我的应用程序中实现了 RecyclerView。由于性能差异,我想使用 notifyItemRemoved 和 notifyItemChanged 而不是 setDataChange 远程更改、添加和删除项目。我想制作一些接口(interface)对象,但我不知道如何或在哪里实现和覆盖接口(interface)方法等。

这是我在 MainActivity.kt 中的 RecyclerView 实现

val linearLayoutManager = LinearLayoutManager(this)
recyclerView.layoutManager = linearLayoutManager

adapter = RecyclerAdapter(itemList)
recyclerView.adapter = adapter

这是我的界面:
public interface AddItemListener {
void addItem(int position);
}

这是我的 RecyclerView 类及其 ViewHolder:
class RecyclerAdapter(val items: ArrayList<RecyclerViewListModel>) :
RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>() {


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_recycler_view, parent, false))

override fun getItemCount(): Int = items.size

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.onBind()
}


inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun onBind(){}
}

}

我在 MainActivity 中有 float 按钮。我想访问 Viewholder 以添加元素。提前致谢 !

最佳答案

像这样向您的适配器添加一个监听器:

class RecyclerAdapter(val items: ArrayList<RecyclerViewListModel>, internal var listener: AddItemListener) :
RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>() {


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_recycler_view, parent, false))

override fun getItemCount(): Int = items.size

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.onBind()
}

fun addNewItem(item : RecyclerViewListModel){
items.add(item)
notifyItemInserted(items.size - 1)
}

fun removeItem(position : Int){
items.removeAt(position)
notifyItemRemoved(position)
}

inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
View.OnClickListener {
override fun onClick(v: View?) {
listener. addItem(adapterPosition)
}

init {
itemView.setOnClickListener(this)
}

fun onBind(){}
}
}

在您的 Activity/fragment 中添加点击监听器:
adapter = RecyclerAdapter(itemList, this)

实现 AddItemListener 的乐趣:
override fun addItem(int position){
// you can get item click position
// you can show the dialog as like "Do you want to delete?"
adapter.romoveItem(position)
}

添加新项目:
val fab: FloatingActionButton = findViewById(R.id.fab)
fab.setOnClickListener { view ->
adapter.addNewItem(RecyclerViewListModel(verb1, verb2....))
}

关于android - 在 Android 中使用 Kotlin 在 RecyclerViewAdapter 中实现自定义接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61531042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com