一些 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()