Ich versuche, einen Swipe zu implementieren, um Aktion in einem RecyclerView zu verwerfen, aber wenn ich einen OnClickListener auf eine beliebige Ansicht in einem ViewHolder setzt überschreibt es alle OnTouch Ereignisse in dieser Ansicht.Swipe und OnClick Ereignisse in RecyclerView
Ich kann OnClickListener verlassen und alle Klicks in der TouchListener behandeln, aber wenn ich mehrere Schaltflächen in einer untergeordneten Ansicht des RecycleView als das wird eine Menge Code sein und das sieht nicht wie ein richtiger Weg.
In meinem RecyleView Ich gründe Swipe Zuhörer zu entlassen (similar to this):
setOnTouchListener(touchListener);
setOnScrollListener(touchListener.makeScrollListener());
Es funktioniert in der Listview, aber in den RecycleView die OnClickListener Blöcke OnTouchListner Ereignisse.
Beispiel für das Layout der ViewHolder-Ansicht.
<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" />
im RecyclerView.Adapter Aufpumpen:
@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);
}
});
}
posten Sie Ihren Code dann – pskink
warum viele Codes? –
Ich habe Code hinzugefügt. –