#android #android-recyclerview #onclicklistener #android-cardview #materialcardview
#Android #android-recyclerview #onclicklistener #android-cardview #материальный вид карты
Вопрос:
У меня есть RecyclerView внутри MaterialCardView, и на этой карте есть множество других представлений.
Элементы RecyclerView не доступны для просмотра, единственная цель — показать некоторые данные из списка. Когда я нажимаю MaterialCardView, я должен перейти на другой экран. Если я касаюсь чего-либо за пределами области RecyclerView, возникает эффект пульсации, и я перехожу на другой экран.Однако, если я нажму на RecyclerView, ничего не произойдет.
Я подозреваю, что представление перехватывает события касания, не позволяя карте использовать щелчок, но не смог найти способ заставить его работать.
Относительно RecyclerView я пытался:
recyclerView.setOnCLickListener(v -> card.callOnClick())
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
card.callOnClick();
}
return false;
}
@Override
public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
Если я вызываю ‘card.callOnClick ()’ или ‘card.performClick ()’ внутри ‘onItemTouchListener’, это работает, но эффекта пульсации не происходит, это не похоже на естественный щелчок.
Я хочу, чтобы RecyclerView не перехватывал щелчок / касание и позволял родительской карте обрабатывать эти события.
Ответ №1:
Мне удалось добиться желаемого поведения, используя recyclerView.setLayoutFrozen(true)
после обновления данных адаптера.