FragmentActivity 进行重新加载item对象不起作用 notifyDataSetChanged 也不行。
FragmentActivity中 进行重新加载item对象不起作用 重新初始化Adapter对象不行 notifyDataSetChanged 也不行 在定义的 Adapter对象中添加一个方法
setFragmentsList 就可以解决了以下是代码实现
1.自定义Adapter
[java] view plaincopy
- public class FragmentsPagerAdapter extends FragmentPagerAdapter {
- private List<Fragment> mFragments;
- public FragmentsPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
- super(fm);
- this.mFragments = fragments;
- }
- public void setFragmentsList(FragmentManager fm, List<Fragment> fragments){
- if (this.mFragments != null) {
- FragmentTransaction ft = fm.beginTransaction();
- for (Fragment f : this.mFragments) {
- ft.remove(f);
- }
- ft.commit();
- ft = null;
- fm.executePendingTransactions();
- }
- this.mFragments = fragments;
- notifyDataSetChanged();
- }
- @Override
- public Fragment getItem(int position) {
- return mFragments.get(position);
- }
- @Override
- public int getCount() {
- return mFragments.size();
- }
- /**
- * A dummy fragment representing a section of the app, but that simply
- * displays dummy text.
- */
- public static class DummySectionFragment extends Fragment {
- public DummySectionFragment() {
- }
- public static final String ARG_SECTION_NUMBER = ”section_number”;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- TextView textView = new TextView(getActivity());
- textView.setGravity(Gravity.CENTER);
- Bundle args = getArguments();
- textView.setText(Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
- return textView;
- }
- }
- }
2.设置Adapter :Handler中进行重新设置的Adapter
[java] view plaincopy
- private Handler mHandler = new Handler(){
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 0:
- mPageViews = new ArrayList<Fragment>();
- PlayerFragment playerView = null;
- PlayerData player = null;
- for (int i = 0; i < mListPlayer.size(); i++) {
- player = mListPlayer.get(i);
- playerView = new PlayerFragment(context, player);
- mPageViews.add(playerView);
- }
- if(mAdapter == null){
- mAdapter = new FragmentsPagerAdapter(getSupportFragmentManager(), mPageViews);
- } else{ // 设置
- mAdapter.setFragmentsList(getSupportFragmentManager(), mPageViews);
- }
- mViewPager.setAdapter(mAdapter);
- mAdapter.notifyDataSetChanged();
- break;
- case 1:
- mAdapter.notifyDataSetChanged();
- break;
- case 2:
- Toast.makeText(context, R.string.no_data, Toast.LENGTH_LONG).show();
- break;
- case 3:
- mPageViews = new ArrayList<Fragment>();
- InstructorFragment instructorView = null;
- Instructor instructor = null;
- for (int i = 0; i < mListInstructor.size(); i++) {
- instructor = mListInstructor.get(i);
- instructorView = new InstructorFragment(context, instructor);
- mPageViews.add(instructorView);
- }
- if(mAdapter == null){
- mAdapter = new FragmentsPagerAdapter(getSupportFragmentManager(), mPageViews);
- } else{
- mAdapter.setFragmentsList(getSupportFragmentManager(), mPageViews);
- }
- mViewPager.setAdapter(mAdapter);
- mAdapter.notifyDataSetChanged();
- break;
- default:
- break;
- }
- }
- };