RecyclerПросмотреть позицию NOT_FOUND после прокрутки - PullRequest
1 голос
/ 01 ноября 2019

Итак, у меня есть родительский recyclerview с вертикальной ориентацией и дочерний recyclerview, вложенный с родительским с горизонтальной ориентацией.

Onclick функция идет с дочерним recylerview

Я создалинтерфейс, который возвращает позицию адаптера дочернего элемента обратно в родительский класс адаптера.

ТЕСТ-СЛУЧАЙ

  1. Отобразите recyclerview и щелкните любой дочерний элемент.

Результат - отлично работает

Прокрутите вниз recyclerview и щелкните по любому дочернему элементу.

результат - работает нормально

Вручную прокрутите назад до 1-й позиции и теперь нажмите на любой дочерний элемент.

результат - родительский recylerview позиция равна -1 (СБОЙ ТЕСТА)

Каковы могут быть возможности этого? Если вам нужен какой-либо код, я могу предоставить его, отредактировав

Родительский класс ViewHolder

class ViewHolder extends RecyclerView.ViewHolder{

        RecyclerView reClassList;


        ViewHolder(View itemView, final Context context) {
            super(itemView);


            reClassList = itemView.findViewById(R.id.recycle_garage_list_class);

            garageListEvents = new GarageListEvents() {
                @Override
                public void getChildPositon(int childPosition) {

                    // TODO Remove
                    Log.e("GARAGE ADAPTER","Garage List Position :"+String.valueOf(getLayoutPosition()));
                }
            };
        }

Child ViewHolder Class

 public class ClassViewHolder extends RecyclerView.ViewHolder {

    public ClassViewHolder(@NonNull View itemView) {
        super(itemView);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                garageListEvents.getChildPositon(getAdapterPosition());
            }
        });
    }
}

ИНТЕРФЕЙС

public interface GarageListEvents {

public void getChildPositon(int childPosition);
}

FYI - GarageAdapter является родительским адаптером

1 Ответ

1 голос
/ 01 ноября 2019

Я думаю, это как-то связано с повторным использованием виджетов. Попробуйте установить это в родительский видоискатель holder.setIsRecyclable(false);. Это мало повлияет на производительность, но должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...