一些Firebase UI Recylerview项目在onItemRangeMoved事件后显示错误的位置

时间:2018-05-15 19:25:38

标签: android firebase android-recyclerview firebaseui

我试图在我的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项'位置变得重复。

数据模型完全没问题。但是位置变量有问题。

需要帮助。 :(

1 个答案:

答案 0 :(得分:1)

您不能使用position变量,因为它仅在当前消息队列循环中有效。由于您的点击监听器将在以后发生,因此您将需要使用getAdapterPosition()