1-) Android RMOS - RecyclerView notifyDataSetChanged da scroll aynı kalması için
private Parcelable recyclerViewState;
public void dovizListele(List<GenelDovizModel> genelDovizModels) {
RecyclerView.LayoutManager layoutManager = recyclerPiyasalar.getLayoutManager();
if (layoutManager != null ) {
recyclerViewState = recyclerPiyasalar.getLayoutManager().onSaveInstanceState();
}
PiyasaAdapter piyasaAdapter = new PiyasaAdapter(piyasaController.tip, genelDovizModels, new BankaClick() {
@Override
public void onItemClick(GenelDovizModel item, int index) {
}
});
...
...
...
piyasaAdapter.notifyDataSetChanged();
layoutManager = recyclerPiyasalar.getLayoutManager();
if (layoutManager != null) {
recyclerPiyasalar.getLayoutManager().onRestoreInstanceState(recyclerViewState);
}
}
2-)İKİNCİ YOL BU TAM EKRAN İTEMİNE GÖRE DÜZENLEME YAPAR
int lastFirstVisiblePosition = 0;
public void dovizListele() {
RecyclerView.LayoutManager layoutManager = recyclerPiyasalar.getLayoutManager();
if (layoutManager != null && layoutManager instanceof LinearLayoutManager) {
lastFirstVisiblePosition = ((LinearLayoutManager) recyclerPiyasalar.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
}
...
...
...
piyasaAdapter.notifyDataSetChanged();
layoutManager = recyclerPiyasalar.getLayoutManager();
if (layoutManager != null) {
int count = layoutManager.getItemCount();
if (lastFirstVisiblePosition != RecyclerView.NO_POSITION && lastFirstVisiblePosition < count) {
layoutManager.scrollToPosition(lastFirstVisiblePosition);
}
}
}