项目位置未在onBind方法中更新

问题描述

我正在实现接口来检测何时在回收站视图中单击视图。单击按钮后,我将删除该项目。单击一次按钮后,它可以正常工作。但是,当我第二次单击时,它会删除它旁边的视图。

@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position) {

    holder.delete.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            optionsClickEvent.onDeleteClicked(position,imagePath);
            showToast(String.valueOf(position));
        }
    });

}

以上代码正在onBind中执行。接下来,我要删除

@Override
public void onDeleteClicked(int position,ArrayList<String> filePath) {
    filePath.remove(position);
    imageAdapter.notifyItemRemoved(position);
}

这一次完美。但是项目不会更新。当我第二次单击删除按钮时,该项将在位置+1处删除

解决方法

用户holder.getAdapterPosition()代替onClick中的布局位置

@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position) {

holder.delete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        optionsClickEvent.onDeleteClicked(holder.getAdapterPosition(),imagePath);
        showToast(String.valueOf(position));
    }
});

}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...