>

ViewPager   fragments 와 함께 . 어댑터는 대체 메소드 getItem () 에서 단편을 가져옵니다. .

@Override
   public Fragment getItem(int position) {
   return new MyFragment();
}

ViewPager 가 필요해  모든 fragments 를 다시로드  특정 이벤트에서 (예 : 버튼 누름). 즉 모든 프래그먼트 (현재 열려있는 프래그먼트 및 그 프래그먼트도 포함)가 업데이트되었습니다. 이것이 어떻게 실현 될 수 있습니까?

  • 답변 # 1

    당신은 ViewPager 를 호출 할 수 있습니다  이렇게 어댑터를 다시 설정하려면

    yourViewPager.setAdapter(yourAdapter);
    
    

    그러나 문제는 첫 번째 요소 위치 (즉, 첫 번째 Fragment )로 점프한다는 것입니다.   ViewPager 에서 ). 당신이 Listener 를 가질 수있는 것을 피하기 위해   ViewPager 의 현재 항목 (현재 조각)을 청취합니다.  현재 위치를 변수에 저장하십시오. 이제이 변수를 사용하여 ViewPager 의 현재 항목을 설정할 수 있습니다  새로 고침 후. 이런 식으로

    yourViewPager.setAdapter(yourAdapter);
    yourViewPager.setCurrentItem(currentPosition);
    
    

    내 이해가 틀렸다면 저를 정정하십시오.

  • 답변 # 2

    어댑터 재정의 getItemPosition  이렇게 :

    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
    
    

    그런 다음 adapter.notifyDataSetChanged() 에게 전화하십시오.  그리고 ViewPager  모든 조회수를 삭제하고 다시로드합니다.

관련 자료

  • 이전 visual studio c ++ 0xc0000005 오류 - 메모리 할당으로 인해 혼란
  • 다음 java - JSON 배열 및 JSON 객체 생성