2

다른 데이터를 제외하고는 기본적으로 사용자 정의보기 ListFragment을 표시하는 ViewPager이 있습니다. 그래서 나는이 동일한 ListFragment을 사용할 수있는 방법이 있어야한다고 생각하지만 보여주는 페이지를 기반으로 다른 데이터로 채 웁니다. Android : 뷰 페이지의 재사용 listfragment

  • 페이지를 내림차순 가격으로 정렬 유료 앱 - 가격 오름차순으로 정렬 유료 앱
  • 2 페이지 -

    구글은 예를 들어 저장 데이터를 재생하여, 나는

    1. 1 페이지를하고 싶습니다 3 - 정렬 무료 애플리케이션으로 내림차순

    어떻게하면 이상을 얻을 수 있습니까? 페이지 1과 페이지 2는 동일한 데이터를 가지므로 단지 정렬해야합니다 (나는 Collections.sort을 사용했습니다). 그러나 3 페이지는 무료 사용자 정보를 다운로드하라는 요청을 서버로 보내야한다는 점을 제외하면 동일한 사용자 정의보기로 ListFragment을 보여줍니다 대신.

    감사합니다. :)

  • +0

    'setArguments()'메소드를 사용하여'ListFragment'에 인수를 전달하고 페이지에서이 정보를 사용하여 다른 동작을 차별화하고 채택하십시오. –

    +0

    hmmm 내'FragmentPagerAdapter'의'getItem' 메소드에서 끝났습니까? – chongzixin

    +0

    Fragment에 인수를 전달하는 방법을 보려면 [this] (https://github.com/lalit3686/ViewPagerDemo) 예제를 확인하십시오. –

    답변

    0

    좋아요, 글쎄, 여기에 내가 가진 가정이있다.

    ListView은 일종의 ListAdapter을 통해 데이터로 제공됩니다.

    ViewPagerPagerAdapter으로 제공됩니다.

    ListAdapter이 경우 정확한 순서로 원하는 정보를 정렬 할 수 있습니다.

    FragmentPagerAdapter은 데이터를 공유하는 각 조각에 동일한 어댑터를 제공 할 수 있습니다. 각 프래그먼트는 원하는 순서대로 데이터를 요청할 수 있으며, 어댑터가 데이터를 정렬하고 프래그먼트가 뷰를 빌드 할 때 getView() 메소드를 통해 값을 전송합니다.

    FragmentPagerAdapter의 경우 조각을 스왑하고 메모리에 보관하여 이미 재사용되고 있습니다. 그러나 그들의 견해는 파괴되고 재건 될 수 있습니다. ListFragment은 뷰를 다시 작성할 때마다 제공된 어댑터의 getView() 메서드를 호출합니다. getView() 메서드는 요청 된 위치를 기반으로 목록의 각 행을 반환합니다.

    모두 동일한 데이터이므로 데이터를 보유하는 하나의 어댑터 만 있으면됩니다. 그러나 요청한 순서대로 정보를 얻을 수 있어야합니다. 이것은 여러 가지 방법으로 수행 할 수 있지만 실제로는 ListFragment에 대한 모든 것이 getView()에서받는 것입니다. 따라서 ListFragment은 어댑터에게 데이터 수신을 원하는 순서를 알릴 수 있습니다. 그런 다음 어댑터는 getView()의 위치 값을 기준으로 순서대로 데이터를 제공 할 수 있습니다.

    +0

    위의 솔루션은 데이터를 정렬하는 데만 사용됩니다 (Google Play 스토어 예에서 인기 급상승 애플리케이션을 오름차순 및 내림차순으로 정렬).또한, (필자가 말한 내용과 정확히 일치하는지 모르겠으므로) 설정을 명확하게하기 위해, 각'ListFragment'는'ArrayAdapter'를 통해 데이터가 제공되고,'ViewPager'는'FragmentPagerAdapter'에 의해 제공됩니다. 내 ArrayAdapter가 생성되고, 서비스 요청이 반환 될 때'asyncTaskCompleted'에'ListAdapter'가 설정됩니다. 어떻게'ViewPagerAdapter'가이 경우에'ListAdapter'와 통신 할 수 있습니까? – chongzixin

    +0

    'FragmentPagerAdapter'가 조각을 만듭니다. 맞나요? 이 경우, 생성시에'ListFragment'에'ArrayAdapter'를 제공해야합니다. 'FragmentPagerAdapter'는 언제든지 프래그먼트의 뷰를 파괴 할 수 있기 때문에 재 구축이 필요할 때, 당신이 제공 한'Adapter'를 통해 그렇게 할 것입니다. 이 경우 모든 데이터가 동일하지만 다른 방식으로 정렬되기 때문에 모든 목록에서 사용되는 단일 'ArrayAdapter'를 가질 수 있습니다. 각 목록은 원하는 순서를 묻고 어댑터는 순서대로보기를 제공 할 수 있습니다. – DeeV

    +0

    처음에는 잘못 설명했다고 생각합니다. 내 대답을 업데이트했습니다. 다행히 혼란스럽지 않으실 겁니다. – DeeV