当我在recyclerview中删除一个项目,然后添加一个新项目时,我删除的项目会再次出现在我的Android应用程序中。我如何修复它?有解决办法吗?

当我在recyclerview中删除一个项目,然后添加一个新项目时,我删除的项目会再次出现在我的Android应用程序中。我如何修复它?有解决办法吗?,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,当我在recyclerview中删除一个项目,然后添加一个新项目时,我删除的项目会再次出现在我的Android应用程序上。我在适配器中使用init调用setonClickLister。我认为我需要在我的活动中调用此代码,但ı将如何做?我用的是kotlin,怎么能修好它?我在下面分享了我的适配器代码,以清楚地看到thanx class NoteAdapter(private var titleText: ArrayList<String>, private var imageButto

当我在recyclerview中删除一个项目,然后添加一个新项目时,我删除的项目会再次出现在我的Android应用程序上。我在适配器中使用init调用setonClickLister。我认为我需要在我的活动中调用此代码,但ı将如何做?我用的是kotlin,怎么能修好它?我在下面分享了我的适配器代码,以清楚地看到thanx

class NoteAdapter(private var titleText: ArrayList<String>, private var imageButton: ArrayList<String>, private var noteText: ArrayList<String>) : RecyclerView.Adapter<NoteAdapter.ViewHolder>() {


    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        val itemTitle : TextView = itemView.findViewById(R.id.recyclerTitleText)
        val itemImage : ImageView = itemView.findViewById(R.id.recyclerImage)
        val itemDelete : ImageView = itemView.findViewById(R.id.delete)


        init {

            itemView.setOnClickListener { v: View ->


               // Toast.makeText(itemView.context,"You clicked on item # ${position + 1}", Toast.LENGTH_SHORT).show()
                val intent = Intent(itemView.context, PastNotesActivity::class.java)
                intent.putExtra("oldTitle", titleText[position])
                intent.putExtra("oldNote", noteText[position])
                intent.putExtra("oldImage", imageButton[position])
                itemView.context.startActivity(intent)

            }

            itemDelete.setOnClickListener { v: View ->

                titleText.removeAt(position)
                imageButton.removeAt(position)
                notifyItemRemoved(position)

            }
        }
    }


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

        val v = LayoutInflater.from(parent.context).inflate(R.layout.recycler_row, parent, false)
        return ViewHolder(v)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        holder.itemTitle.text = titleText[position]
        Picasso.get().load(imageButton[position]).resize(150,150).into(holder.itemImage)

    }

    override fun getItemCount(): Int {

        return titleText.size
    }

    

}

在BindViewHolder内单击放置按钮:

 override fun onBindViewHolder(holder: ViewHolder, position: Int) {

    holder.itemTitle.text = titleText[position]
    Picasso.get().load(imageButton[position]).resize(150,150).into(holder.itemImage)

     val itemDelete : ImageView = itemView.findViewById(R.id.delete)

     itemDelete.setOnClickListener { v: View ->

            titleText.removeAt(position)
            imageButton.removeAt(position)
            notifyItemRemoved(position)

        }

}
我有一些建议:

-您不应该像那样使用内部视图保持器

-并阐明您的活动、适配器和视图持有者

-创建自己的侦听器或回调函数来处理来自viewholder的操作


-创建数据类/map/。。。要管理或存储您的数据,请不要这样使用。

谢谢您的建议。我会尽力按照你说的做,但这里没有定义项目删除。我使用init。我尝试过这个,但是由于holder的原因,没有定义itemView。我试着和霍尔德一起写,但又没用了
 override fun onBindViewHolder(holder: ViewHolder, position: Int) {

    holder.itemTitle.text = titleText[position]
    Picasso.get().load(imageButton[position]).resize(150,150).into(holder.itemImage)

     val itemDelete : ImageView = itemView.findViewById(R.id.delete)

     itemDelete.setOnClickListener { v: View ->

            titleText.removeAt(position)
            imageButton.removeAt(position)
            notifyItemRemoved(position)

        }

}