FragmentActivity 进行重新加载item对象不起作用 notifyDataSetChanged 也不行

FragmentActivity中 进行重新加载item对象不起作用 重新初始化Adapter对象不行 notifyDataSetChanged 也不行 在定义的 Adapter对象中添加一个方法 

setFragmentsList 就可以解决了以下是代码实现

1.自定义Adapter

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

	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;
			}
		}
	};




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值