0

私のアプリケーションでリサイクルビューを使用しています。私はレイアウトマネージャーを変更するための相対的なレイアウトでリサイクルビューの上に1つのボタンを持っています。最初にグリッドレイアウトマネージャが表示され、ボタンをクリックするとLinearlayoutmanagerが表示されます。レイアウトマネージャを変更している間、リサイクルビューは最初の位置から再び開始されます。レイアウトを変更した後、Recyclerviewはスクロール位置を維持します

レイアウトマネージャの変更を動的に行うときの姿勢をそのまま維持できる人はいますか?

+0

あなたは '' RecyclerView#scrollToPosition(int型の位置を)しようとしましたか? – nshmura

+0

スクロールを表示したくない –

+0

scrollToPositionにスクロールが表示されません。このメソッド名は少し複雑です。 – nshmura

答えて

3

のLayoutManagerを変更した後、あなたはそれは私が自分自身でそれを試してみた正常に動作しますfirstVisibleItemを覚えて、その位置までスクロールする必要があります。例えば

LayoutManagerを変更するButtonクリック:

btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int i = ((LinearLayoutManager) rcView.getLayoutManager()).findFirstVisibleItemPosition(); 
       if(rcView.getLayoutManager() instanceof GridLayoutManager) {     
        rcView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); 
       } else {      
        rcView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3)); 
       } 
       rcView.scrollToPosition(i); 
      } 
     }); 
+0

私はこれを試してみます –

+0

ありがとう@davidこの回答は役に立ちました –

関連する問題