찾다

 >  Q&A  >  본문

android - ViewPager+Fragment,某个Fragment里面的一条数据发生变化,如何局部刷新这条数据

ViewPager+Fragment,某个Fragment里面的一条数据发生变化,如何局部刷新这条数据

高洛峰高洛峰2772일 전676

모든 응답(4)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-17 17:44:05

    ViewPager의 항목이 Fragment인 경우 일반적으로 FragmentPagerAdapter이 Adapter로 사용되며, 이 클래스는 Fragment 추가 시 태그를 추가하게 됩니다. 소스의 FragmentPagerAdapter 메소드 instantiateItem()를 참고하세요.

    의 코드 으아악

    이 태그는 makeFragmentName()의 private 메소드를 통해 얻어지지만, 이 메소드의 viewId 매개변수는 ViewPager의 id여야 하며, itemId는 getItemId() 메소드를 사용하면 됩니다. 태그를 직접 조립하여 조각을 얻을 수 있습니다.
    그게 전부입니다.

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 17:44:05

    RecyclerView를 사용한다면 이렇게 Eventbus를 사용할 수 있습니다

    으아악

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 17:44:05

    저도 이 문제에 대해 한동안 고민해 보았는데, 검색해봐도 마땅한 해결 방법을 찾을 수 없었습니다. pagerfragmentadapter에서는 해당 조각을 얻기 위한 API를 제공하지 않는 것 같습니다.
    인덱스에 약한 참조 목록을 만들어 프래그먼트를 초기화할 때 어댑터에 추가한 다음 어댑터의 onDestroyItem(아마도 이렇게 불렀는지 기억이 안 나네요)을 다시 작성하여 목록에서 해당 항목을 제거했습니다. 여기.
    조각 인스턴스를 얻은 후 원하는 대로 작동할 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:44:05

    1. Fragment가 포그라운드에 있을 때 LocalBroadcastManager / EventBus / otto / Rx를 사용하여 이벤트(메시지)를 구독할 수 있습니다.

    2. Fragment가 백그라운드로 전환되면 구독을 취소하세요. Fragment가 다시 포그라운드로 전환되면 페이지 데이터를 새로 고치고 다시 구독하세요

    회신하다
    0
  • 취소회신하다