[Android] Comment faire défiler horizontalement RecyclerView par programme?



Answers

RecyclerViews ont une méthode qu'ils exposent pour défiler à une certaine position:

Accrochez le défilement à une position donnée:

mRecyclerView.scrollToPosition(int position)

Lisser défilement vers une position donnée:

mRecyclerView.smoothScrollToPosition(int position)

Pour que ces méthodes fonctionnent, LayoutManager de RecyclerView doit avoir implémenté ces méthodes, et LinearLayoutManager implémente de manière basique, donc vous devriez être LinearLayoutManager à partir.

Question

J'ai un horizontal RecyclerView et deux boutons (Suivant, Précédent) comme indiqué dans l'image ci-dessous.

donc je dois passer à l'élément ou la position suivante en utilisant ces boutons, je connais la méthode appelée scrollTo mais je ne sais pas comment ça marche




int mFirst=0, mLast=0;

recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        LinearLayoutManager llm = (LinearLayoutManager) recyclerview.getLayoutManager();
        mLast = llm.findLastCompletelyVisibleItemPosition();
        mFirst = llm.findFirstCompletelyVisibleItemPosition();
    }
});

imgRight.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        LinearLayoutManager llm = (LinearLayoutManager) recyclerview.getLayoutManager();
        llm.scrollToPositionWithOffset(mLast + 1, List.length());
    }
});

imgLeft.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        LinearLayoutManager llm = (LinearLayoutManager) recyclerview.getLayoutManager();
        llm.scrollToPositionWithOffset(mFirst - 1, List.length());
    }
});



Links