J'ai une RecyclerView
avec une LinearLayoutManager
appuyée par un adaptateur avec des éléments de hauteur différente . Existe-t-il un moyen de demander à RecyclerView
de définir la position de défilement de sorte que l'élément X apparaisse (plus ou moins) exactement au bas de l'écran?
J'ai essayé LinearLayoutManager.scrollToPosition()
mais cela positionnera l'élément en haut de la vue.
MyAdapter mAdapter;
RecyclerView recyclerView;
List<ItemData> data = new ArrayList<>();
LinearLayoutManager llm = new LinearLayoutManager(this);
essayez ceci dans la méthode OnCreate
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(llm);
llm.setStackFromEnd(true);
mAdapter = new MyAdapter(data, getApplication());
recyclerView.setAdapter(mAdapter);
et quand vous insérez un article, essayez ceci
mAdapter.notifyItemInserted(data.size() - 1);
llm.scrollToPosition(data.size() - 1);
Essayez ceci dans mainActivity.class
rv_journey.setAdapter(ca);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
scrollList();
}
}, 500);
Voici ma méthode de défilement
private void scrollList(){
rv_journey.post(new Runnable() {
@Override
public void run() {
// Call smooth scroll
rv_journey.smoothScrollToPosition(Index);
}
});
}
Définissez l'index de la classe Adapter qui étend RecyclerView.Adapter à l'endroit où vous devez faire défiler ...
if (Condition) {
mainActivity.Index=position+1;
}
}
Bonne codage ...