Некоторые элементы Recylerview пользовательского интерфейса Firebase, показывающие неправильную позицию после события onItemRangeMoved - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь настроить всплывающее меню внутри моего адаптера 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 голосов
/ 16 мая 2018

Нельзя использовать переменную position, поскольку она действительна только в текущем цикле очереди сообщений. Так как ваш прослушиватель кликов произойдет намного позже, вы захотите использовать вместо него getAdapterPosition().

...