一些 Firebase UI Recyclerview 项目在 onItemRangeMoved 事件后显示错误的位置
Some Firebase UI Recylerview items showing wrong position after onItemRangeMoved event
我正在尝试在我的 firebase RecyclerView 适配器中设置一个弹出菜单。
当数据静止和添加新数据时,它工作正常。但是,当一个旧项目移动到顶部时,它会弄乱位置。
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
p.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.remove:
break;
}
return false;
}
});
System.out.println(getRef(position).getKey());
System.out.println(position);
p.show();
return false;
}
});
这个函数在OnBindViewHolder里面。它在第一次加载时打印显示正确数据的语句。但是移动一个项目后,前 2-5 个项目的位置会重复。
数据模型完全没问题。但是位置变量有问题。
需要帮助。 :(
您不能使用 position
变量,因为它只在当前消息队列循环中有效。由于您的点击侦听器将在稍后发生,因此您需要改用 getAdapterPosition()
。
我正在尝试在我的 firebase RecyclerView 适配器中设置一个弹出菜单。 当数据静止和添加新数据时,它工作正常。但是,当一个旧项目移动到顶部时,它会弄乱位置。
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
p.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.remove:
break;
}
return false;
}
});
System.out.println(getRef(position).getKey());
System.out.println(position);
p.show();
return false;
}
});
这个函数在OnBindViewHolder里面。它在第一次加载时打印显示正确数据的语句。但是移动一个项目后,前 2-5 个项目的位置会重复。
数据模型完全没问题。但是位置变量有问题。
需要帮助。 :(
您不能使用 position
变量,因为它只在当前消息队列循环中有效。由于您的点击侦听器将在稍后发生,因此您需要改用 getAdapterPosition()
。