使用 notifyItemInserted 时,onBindViewHolder 保持插入项目的位置
When using notifyItemInserted the onBindViewHolder keeps the position where the item was inserted
当我添加新项目时,使用以下代码行:-
proAdapter.notifyItemInserted(0);
onBindViewHolder保持位置0。
使用 onClick 侦听器时会出现问题,因为它始终位于位置 0
因此,如果我单击并尝试删除第 5 个项目,位置 0 的项目将始终被删除。
有没有办法重置 onBindViewHolder 的位置?
当我使用以下时,没有问题:-
proAdapter.notifyDataSetChanged();
这是我在 Java class
中添加新项目时的代码
setPro.addToSpinnerItems(0, newItem);
//proAdapter.notifyDataSetChanged();
proAdapter.notifyItemInserted(0);
smoothScroller.setTargetPosition(0);
layoutManager.startSmoothScroll(smoothScroller);
这是我的 onclicklistener 代码
holder.myImage.setOnClickListener(v -> {
spinnerItems.remove(position);
Log.d("myTag", "Delete item: " + position);
notifyDataSetChanged(); //Here I could also use notifyItemRemoved
});
使用 getAdapterPosition()
获取 viewHolder 的位置而不是将其保存在变量中,将您的代码更改为这样的东西
holder.myImage.setOnClickListener(v -> {
int position = holder.getAdapterPosition();
spinnerItems.remove(position);
Log.d("myTag", "Delete item: " + position);
notifyItemRemoved(position);
});
当我添加新项目时,使用以下代码行:-
proAdapter.notifyItemInserted(0);
onBindViewHolder保持位置0。
使用 onClick 侦听器时会出现问题,因为它始终位于位置 0
因此,如果我单击并尝试删除第 5 个项目,位置 0 的项目将始终被删除。
有没有办法重置 onBindViewHolder 的位置?
当我使用以下时,没有问题:-
proAdapter.notifyDataSetChanged();
这是我在 Java class
中添加新项目时的代码 setPro.addToSpinnerItems(0, newItem);
//proAdapter.notifyDataSetChanged();
proAdapter.notifyItemInserted(0);
smoothScroller.setTargetPosition(0);
layoutManager.startSmoothScroll(smoothScroller);
这是我的 onclicklistener 代码
holder.myImage.setOnClickListener(v -> {
spinnerItems.remove(position);
Log.d("myTag", "Delete item: " + position);
notifyDataSetChanged(); //Here I could also use notifyItemRemoved
});
使用 getAdapterPosition()
获取 viewHolder 的位置而不是将其保存在变量中,将您的代码更改为这样的东西
holder.myImage.setOnClickListener(v -> {
int position = holder.getAdapterPosition();
spinnerItems.remove(position);
Log.d("myTag", "Delete item: " + position);
notifyItemRemoved(position);
});