8

Ich habe versucht, den Scroll-Listener für die Recycler-Ansicht hinzuzufügen und habe eine Logik erstellt, aber ich kann nicht immer ein Element nach dem anderen wischen. Ich habe eine Suche im Internet durchgeführt, aber ich habe eine Drittanbieter-Bibliothek, die eine benutzerdefinierte Recycler-Ansicht hat. Können wir in der Recycler-Ansicht jeweils einen Artikel-Swipe implementieren? Wenn ja bitte erzählen wie? Ein Gegenstand wischen auf einmal so image.Wischen Sie immer nur ein Element Recyclerview

+1

Viewpager ist, was Sie suchen. Wie für benutzerdefinierte Übergänge durchlaufen [diese] (http://developer.android.com/training/animation/screen-slide.html) –

+0

Vielen Dank. Aber ich kann ViewPager nicht verwenden, um in Recyclerview ein Element zu scrollen. –

+0

Ähm, ich meinte Viewpager anstelle eines RecyclerView. –

Antwort

24

Ich weiß, es ist spät, aber andere könnten dies hilfreich finden. Zu dieser Zeit hatte ich keine andere Wahl, also benutzte ich https://github.com/lsjwzh/RecyclerViewPager Bibliothek. Vor kurzem habe ich einen Link gefunden, wo etwas Neues hinzugefügt wurde in Support-Bibliothek von here. Wir können PagerSnapHelper verwenden, die in v7 Unterstützung Bibliothek ist. Wie:

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
SnapHelper snapHelper = new PagerSnapHelper(); 
snapHelper.attachToRecyclerView(recyclerView); 
+1

Danke für das Update, es funktioniert genauso wie Viewpager. –

+2

Gibt es eine Möglichkeit, 'PagerSnapHelper' zu veranlassen, nur ein Element * (wie eigentlich in der Frage beschrieben) gleichzeitig zu streichen? Wenn Sie energisch scrollen, streicht es mehrere Elemente gleichzeitig. – Ixx

+0

Ich bin mir nicht sicher, versuchen Sie 'LinearSnapHelper'. –

1

https://github.com/googlesamples/android-HorizontalPaging/

Dies hat den Link zu etwas ähnlich dem, was Sie in den Bildern gezeigt haben. Lassen Sie mich wissen, ob es etwas Zusätzliches gibt, das Sie suchen, und ich werde die relevanten Bibliotheken verlinken.

Der Unterschied zwischen ViewPager und recyclerView besteht darin, dass Sie in recyclerView zwischen vielen Elementen wechseln, während Sie in ViewPager zwischen mehreren Fragmenten oder unabhängigen Seiten wechseln.

Ich sehe, Sie verwenden diese https://github.com/lsjwzh/RecyclerViewPager, gibt es einen bestimmten Anwendungsfall, den Sie im Sinn haben?

4

Das ist spät, i wissen.

Es gibt eine sehr einfache Möglichkeit, genau das angeforderte Scrollverhalten mit der Verwendung eines benutzerdefinierten SnapHelper zu erhalten.

Erstellen Sie Ihren eigenen SnapHelper, indem Sie den Standard-SnapHelper überschreiben (android.support.v7.widget.LinearSnapHelper).

public class SnapHelperOneByOne extends LinearSnapHelper{ 

    @Override 
    public int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int velocityX, int velocityY){ 

     if (!(layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider)) { 
      return RecyclerView.NO_POSITION; 
     } 

     final View currentView = findSnapView(layoutManager); 

     if(currentView == null){ 
      return RecyclerView.NO_POSITION; 
     } 

     final int currentPosition = layoutManager.getPosition(currentView); 

     if (currentPosition == RecyclerView.NO_POSITION) { 
      return RecyclerView.NO_POSITION; 
     } 

     return currentPosition; 
    } 
} 

Dies ist grundsätzlich die Standardmethode, aber ohne einen Sprungzähler hinzuzufügen, der durch die Scrollgeschwindigkeit berechnet wird.

Wenn Sie schnell und lang wischen, wird die nächste (oder vorherige) Ansicht zentriert (dargestellt).

Wenn Sie langsam und kurz wischen, bleibt die aktuelle zentrierte Ansicht nach dem Loslassen zentriert.

Ich hoffe, diese Antwort kann noch jedem helfen.

+0

Danke! Deine Antwort hat meinen Tag gerettet – Hoby

Verwandte Themen