1

をスクロールするとonLoadMoreListenerを使用しています。下にスクロールすると、RecyclerViewのデータが更新されます。 Recyclerviewデータを更新した後。 Recyclerviewが先頭に戻ります。理想的には、私はRecyclerViewの位置を保持したいと思います。どのように私はこれを行うに行く必要がどのような考え?Recyclerview i更新時の最初の位置に変更する

mAdapter.setOnLoadMoreListener(new OnLoadMoreListener() { 
      @Override 
      public void onLoadMore() { 
       new GroupData().execute(); 
      } 
     }); 


InnerClass

public static class GroupData extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... voids) { 
      try{ 
      GroupList gm = new GroupList(); 
      ..... 
      groupvalues.add(gm); 
      } catch (Exception e){ 
       Log.d("Grouplist ", e.toString()); 
      } 
      return null; 
     } 
     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      mAdapter = new GroupAdapter(groupvalues,mrecyclerview); 
      mrecyclerview.setAdapter(mAdapter); 
      progressDialog.dismiss(); 
      mAdapter.notifyDataSetChanged(); 
      } 
      } 
     } 
+1

、これを試してみてください

mAdapter = new GroupAdapter(groupvalues,mrecyclerview); mrecyclerview.setAdapter(mAdapter); 

答えて

2

のonCreate

にアダプタを初期化。あなたのロジックを最初に変更しようとしてください
1

あなたが新しいロードされた項目の先頭の要素の位置を知ることがなければなりませんロードされています。ただ呼び出す:

recyclerView.scrollToPosition(position); 

またはちょうどあなたがより多くの項目を読み込むときだけonPostExecuteであなたのアダプタに通知

1

にその位置にあなたのrecyclerViewとスクロールの最後の既知の位置を保存します。アダプターをもう一度初期化する必要はありません。

@Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     progressDialog.dismiss(); 
     mAdapter.notifyDataSetChanged(); 
    } 

は、あなたがよりロードされないあなたのRecyclerviewをリフレッシュように、それは思える

public static class GroupData extends AsyncTask<Void, Void, Void> { 
    int size = 0; 

    @Override 
    protected void onPreExecute() { 
     size = groupvalues.size(); 
    } 

    @Override 
    protected Void doInBackground(Void... voids) { 
     try { 
      GroupList gm = new GroupList(); 
      ..... 
      groupvalues.add(gm); 
     } catch (Exception e) { 
      Log.d("Grouplist ", e.toString()); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     mAdapter.notifyItemRangeChanged(size, groupvalues.size() - size); 
     progressDialog.dismiss(); 
    } 
} 
+0

私はこれを試しました。同じ問題が発生する –

+0

あなたはどんな問題を抱えていますか? –

+0

recyclerviewデータを更新した後。 Recyclerviewは上に戻ります。理想的には、私はListViewの位置を保持したいと思います。どのように私はこれを行うに行く必要がどのような考え? –

関連する問題