0

내 응용 프로그램에서 재활용보기를 사용하고 있습니다. 레이아웃 관리자 변경을위한 상대 레이아웃에서보기를 재사용 할 수있는 버튼이 하나 있습니다. 먼저 그리드 레이아웃 관리자를 표시하고 버튼을 클릭하면 Linearlayoutmanager가 표시됩니다. 레이아웃 관리자를 변경하는 동안 리사이클 뷰가 첫 번째 위치에서 다시 시작됩니다.Recyclerview는 레이아웃을 변경 한 후에 스크롤 위치를 유지합니다.

레이아웃 관리자를 동적으로 변경하는 경우 현재 위치를 유지하는 데 도움을 줄 수 있습니까?

+0

당신이'RecyclerView # scrollToPosition (INT 위치)'시도해 봤어? – nshmura

+0

스크롤을 표시하고 싶지 않습니다. –

+0

scrollToPosition에 스크롤이 표시되지 않습니다. 이 메소드 이름은 약간 복잡합니다. – nshmura

답변

3

당신은 firstVisibleItem을 기억 자신에 의해 그것이 내가 그냥 밖으로 시도 잘 작동 LayoutManager의를 변경 한 후 해당 위치로 이동해야합니다 :

일예를 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이 답변은 도움이됩니다. –

관련 문제