【问题标题】:multiple Fragments with different expandableList's for same data具有不同可扩展列表的多个片段用于相同的数据
【发布时间】:2012-11-12 07:02:36
【问题描述】:

这个问题可能很无聊,但我无法找到正确的解决方案。

这是我的问题:

我想在自己的片段中显示多个ExpandableLists(比如说5)中的数据(java.util.List 和我的TaskObjects),以便用户能够在不同的列表之间滑动。 目前我有一个MainFragmentActivity,其中包含java.util.ListPageViewer 和一个包含标签AllTaskFragmentOverDueTaskFragment 的“扩展”FragmentPagerAdapter(如TabsAdapter)。这两个 Fragment 各有一个 ExpandableListExpandableListAdapter(我写的)。

现在当用户点击任何ExpandableLists 中的孩子时,我需要如何通知其他片段ExpandableListAdapter 进行更新?我尝试调用MainFragmentActivity 并从那里调用所有片段,但随后片段ExpandableListAdapters 为“空”,但为什么呢?

更新:

我想我解决了这个问题,atm 正在使用:

如果任何 ExpandableListAdapter 发生变化,我会调用 updateTabs() in

MainFragmentActivity

    public void updateTabs() {
        for(int i = 0 ; i < tabsAdapter.getCount() ; i++) {
            UpdateableFragment updateableFragment = (UpdateableFragment) getSupportFragmentManager().findFragmentByTag(makeFragmentName(mViewPager.getId(),i));
            updateableFragment.updateFragment();
        }
    }

    private String makeFragmentName(int viewId, int index){
         return "android:switcher:" + viewId + ":" + index;
    }

它只是在每个片段中调用方法

public void updateFragment() {
         adapter.notifyDataSetChanged();
}

这是一个好方法吗?或者这可能会引发一些问题?

【问题讨论】:

  • 请提供代码示例。

标签: android list fragment expandablelistview


【解决方案1】:

此类应用程序的关键是跟踪 ArrayAdapter。如果你调用ArrayAdapter.notifyDataSetChanged(),它会告诉它的视图更新。

【讨论】:

  • 我尝试使用具有更新方法的接口“UpdateableFragment”并将其放在片段上以调用我存储在实例变量中的适配器,但每次调用该方法时,我适配器出现 NullPointerException... public void updateFragment() {adapter.notifyDataSetChanged();}
  • 你是怎么得到adapter的?
  • 我将它存储为类的实例。受保护的 ExpandableListTaskAdapter 适配器;
  • 好吧,问题是我调用了错误的片段...我猜(很确定)for(int i = 0 ; i
猜你喜欢
  • 1970-01-01
  • 2020-10-04
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多