J'essayais d'obtenir une disposition où il y avait un carrousel en haut et en dessous une grille d'images. L'activité a un RecyclerView et l'élément de ce RecyclerView (MainRV) lui-même est un autre RecyclerView (ChildRV). J'ai fait le premier enfant de MainRV à utiliser un LinearlayoutManager avec Horizontal Scroll. Le deuxième enfant utilise un GridLayoutManager. Le ChildRV rend les éléments réels.L'onScrollListener de l'enfant imbriqué de RecyclerView ne s'est pas déclenché
Le problème est, je veux implémenter le chargement paresseux pour le deuxième enfant du MainRV (vue de grille). Mais, lorsque j'essaie d'ajouter onScrollListener à l'enfant, il ne se déclenche pas.
Ce que j'ai essayé:
I Tried réglage setNestedScrollingEnabled sur les deux MainRV et ChildRV. Cependant, il n'a pas déclenché l'onScrollListener.
J'ai implémenté le onScrollListener sur le MainRV et j'ai essayé d'obtenir le deuxième enfant après que l'état de défilement devienne IDLE. Mais quand j'appelle findLastVisibleItemPosition() sur le gridLayoutManager, il donne la position du dernier élément même si je suis en haut de la grille. Ci-dessous l'extrait du onScrollListener
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == RecyclerView.SCROLL_STATE_IDLE) {
RecyclerView recyclerView1 = (RecyclerView) recyclerView.getChildAt(1);
GridLayoutManager gridLayoutManager = (GridLayoutManager) recyclerView1.getLayoutManager();
Log.e("Scrolled activity pos", "" + gridLayoutManager.findLastVisibleItemPosition());
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
La sortie du code ci-dessus donne la position du dernier élément qui est 49 dans mon cas.
Toute aide ou suggestion serait grandement appréciée.