Próbuję zaimplementować przesunięcie w celu odrzucenia akcji w RecyclerView, ale gdy ustawię OnClickListener w dowolnym widoku w ViewHolder, zastępuje on wszystkie zdarzenia OnTouch w tym widoku.Zdarzenia Swipe i OnClick w RecyclerView
Mogę zrezygnować z OnClickListener i obsłużyć wszystkie kliknięcia w TouchListener, ale jeśli mam wiele przycisków w widoku podrzędnym RecycleView, to będzie dużo kodu i nie wygląda to tak, jak należy.
W moim RecyleView mam ustawienie Przesuń, by zamknąć słuchaczy (similar to this):
setOnTouchListener(touchListener);
setOnScrollListener(touchListener.makeScrollListener());
Działa w ListView, ale w RecycleView bloków OnClickListener OnTouchListner wydarzeń.
Przykład układu dla widoku ViewHolder.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="72dp"
android:descendantFocusability="blocksDescendants">
<ImageView
android:id="@+id/keep_icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_centerInParent="true"
android:src="@drawable/ic_received" />
Pompowanie w RecyclerView.Adapter:
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = mInflater.inflate(R.layout.push_card_view_compat, viewGroup, false);
return new ViewHolder(v, onClickListener, onKeepListener);
}
The ViewHolder:
public ViewHolder(final View itemView,
final OnViewHolderClickListener onClickListener,
final OnKeepListener onKeepListener) {
super(itemView);
keepButton = (ImageView) itemView.findViewById(R.id.keep_icon);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.onClick(getPosition(), itemView);
}
});
keepButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onKeepListener.onClick(getPosition(), itemView);
}
});
}
pisać kod następnie – pskink
dlaczego dużo kodu? –
Dodałem kod. –