哪个是将(列表)适配器传递给(列表)片段的最佳方法?

时间:2013-09-05 14:26:58

标签: android android-listview android-fragments

我已经阅读了几个类似的问题,但我没有找到一个令人信服的解决方案。

我正在编写一个FTP客户端应用程序,因此我有一个Activity,其中包含三个标签(ListFragment s):待处理,已完成和已失败的转移。实际传输在beckground中由Service执行,它会更新DB / ContentProvider中的三个相应表。我的活动使用LoadManager在标签中显示数据库内容。

我的活动中的主要参与者是:

  1. A ViewPager
  2. 亲戚PagerAdapter
  3. 三个ListFragment s
  4. 他们的亲戚ListAdapter
  5. 那么:这是将ListAdapter传递给Fragment的最佳位置?

    到目前为止,我将适配器传递给Fragments到PagerAdapter的Fragment getItem(int)方法。这样做,一切正常,直到您旋转设备。实际上,重新创建了Activity,但片段不是!碰巧全新的PagerAdapter会查看FragmentsManager并查找片段,因此它不会调用getItem方法。

    我的解决方法是将此代码放在活动的onCreate方法中:

    List<Fragment> fragments = getSupportFragmentManager().getFragments();
    if (fragments != null) 
        for (int i = 0; i < fragments.size(); i++) 
        switch (i) {
         case PENDING_ID:
             ((MyListFragment) fragments.get(i)).setListAdapter(pendingCursorAdapter);
             break;
             ...
        }
    

    它确实很好用,但它很棘手,没有人确保fragments[position]列表中的位置与getItem(int position)给出的位置相同。

0 个答案:

没有答案