Sto tentando di implementare uno scorrimento per eliminare l'azione in un RecyclerView ma quando imposto un OnClickListener su qualsiasi vista in un ViewHolder sostituisce tutti gli eventi OnTouch su quella vista.Scorri e eventi OnClick in RecyclerView
Posso abbandonare OnClickListener e gestire tutti i clic in TouchListener, ma se ho più pulsanti in una vista secondaria del RecycleView di quello sarà un sacco di codice e questo non sembra un modo giusto.
Nel mio RecyleView che sto impostando Swipe a respingere gli ascoltatori (similar to this):
setOnTouchListener(touchListener);
setOnScrollListener(touchListener.makeScrollListener());
Funziona in ListView, ma nelle RecycleView i blocchi OnClickListener OnTouchListner eventi.
Esempio di layout per vista 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" />
Gonfiando nella 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);
}
Il 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);
}
});
}
pubblicare il tuo codice di allora – pskink
perché un sacco di codice? –
Ho aggiunto il codice. –