我试图在我的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项'位置变得重复。
数据模型完全没问题。但是位置变量有问题。
需要帮助。 :(
答案 0 :(得分:1)
您不能使用position
变量,因为它仅在当前消息队列循环中有效。由于您的点击监听器将在以后发生,因此您将需要使用getAdapterPosition()
。