Ich benutze Recyclerview 22.2.0 und die Helper-Klasse ItemTouchHelper.SimpleCallback zu aktivieren swipe-to-entlassen Option zu meiner Liste. Aber da ich eine Art Header habe, muss ich das Wischverhalten für die erste Position des Adapters deaktivieren. Wie RecyclerView.Adapter keine isEnabled() Methode habe ich versucht, die Ansicht Interaktion durch die Methoden isEnabled() und isFocusable() in der ViewHolder Schöpfung selbst, hatte aber keinen Erfolg zu deaktivieren. Ich habe versucht, die Swipe-Schwelle auf einen vollen Wert, wie 0f1f in der SimpleCallback-Methode getSwipeThreshold(), aber auch keinen Erfolg.Deaktivieren Swipe für die Position in RecyclerView mit ItemTouchHelper.SimpleCallback
Einige Fragmente meines Codes, um Ihnen zu helfen, mir zu helfen.
Meine Aktivität:
@Override
protected void onCreate(Bundle bundle) {
//... initialization
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
return false;
}
@Override
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof CartAdapter.MyViewHolder) return 1f;
return super.getSwipeThreshold(viewHolder);
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
Und ich habe einen gemeinsamen Adapter mit zwei Ansichtstypen. Im ViewHolder, die ich klauen deaktivieren wollen, ich habe:
public static class MyViewHolder extends RecyclerView.ViewHolder {
public ViewGroup mContainer;
public MyViewHolder(View v) {
super(v);
v.setFocusable(false);
v.setEnabled(false);
mContainer = (ViewGroup) v.findViewById(R.id.container);
}
}
Genau das, was ich gesucht habe! Vor allem, wenn diese Methode nicht auf der [offiziellen Dokumentation] (http://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.Callback.html) erscheint ... – ptitvinou
@ptitvinou ist es vorhanden auf 'SimpleCallback' http://developer.android.com/intl/pt-br/reference/android/support/v7/widget/helper/ItemTouchHelper.SimpleCallback.html –
Erwähnenswert: wenn Sie nur für eine Richtung zulassen möchten bei bestimmten Artikeln dann 'return position == 0? ItemTouchHelper.LEFT: super.getSwipeDirs (recyclerView, viewHolder); '- dies erlaubt nur für Links wischen. –