1

这几天我一直在寻找,但没有成功,所以我发布了这个问题,希望有人能回答。

设置(使用 android-support-library-v4,修订版 12):

我有 1 个带有 ViewPager 的主要活动。

我有 1 个片段类,称为 DataFragmentClass,它由一个 ListView 组成。这个片段类从互联网上异步加载数据并将其显示在列表视图中。但是,这个片段类可以加载两种类型的数据,称为 DataTypeA 和 DataTypeB。

我所做的是在我的主要活动中创建这个片段的两个实例,如下所示:

Fragment[] mFragmentList = new Fragment[2];
mFragmentList[0] = DataFragmentClass.newInstance(Modes.DataTypeA);
mFragmentList[1] = DataFragmentClass.newInstance(Modes.DataTypeB);

然后我将此数组传递给我的 ViewPager,它工作正常。

创建后,Fragments 将开始异步加载数据:

    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  

        View view = inflater.inflate(R.layout.genericlistview, container, false);

        DataProvider mDataProvider = new DataProvider(this.getActivity());
        mDataProvider.addListener(mDataResponseAdapter);

        return view;  
    }  

第一个数据加载一切正常 - DataTypeA 将加载到 Fragment1,DataTypeB 将加载到 Fragment2。

但是,任何后续加载都会导致数据“溢出”。所有数据(类型 A 和 B)现在都加载到 Fragment2 中。

我已将问题缩小到 ListView 更新。

我要做的是:

        Runnable updateListView = new Runnable(){

            @Override
            public void run() {
                adapter.add(myNewData);
                adapter.notifyDataSetChanged();
            }           
        };


    DataFragmentClass.this.getActivity().runOnUiThread(updateListView);

我认为在这些方面出了点问题:

  1. 在 UI 线程上发布可运行文件时。
  2. 当远程服务器返回数据时。

任何建议都会非常有帮助。谢谢!

4

0 回答 0