过去几天我一直在寻找,但没有成功,所以我发布这个问题,希望有人能回答。
设置(使用android-support-library-v4,修订版12):
我有一个ViewPager的主要活动。
我有1个Fragment类,名为DataFragmentClass,由ListView组成。 此片段类以异步方式从Internet加载数据并将其显示在列表视图中。但是,此片段类可以加载两种类型的数据,称为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);
我觉得在这些方面出了点问题:
任何建议都会非常有用。谢谢!