Итак, у меня есть родительский recyclerview
с вертикальной ориентацией и дочерний recyclerview
, вложенный с родительским с горизонтальной ориентацией.
Onclick
функция идет с дочерним recylerview
Я создалинтерфейс, который возвращает позицию адаптера дочернего элемента обратно в родительский класс адаптера.
ТЕСТ-СЛУЧАЙ
- Отобразите
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 является родительским адаптером