🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / RecyclerView notifyDataSetChanged da scroll aynı kalması için

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);
            }
        }
    }


 

 2021 Aralık 27 Pazartesi
 365