ViewPager数据加载错乱的问题

这几天,利用ViewPager作了一个滑动页面,发现里面的数据都是错乱的,后来发现加载数据的时机不对,特在此做一个笔记,备忘~~


这是Adapter;

package me.quantumti.masktime.adapter;

import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;

public class MaskPlanViewPagerAdapter extends PagerAdapter
{
	private List<View> mpViews;
	
	public MaskPlanViewPagerAdapter(List<View> mpViews)
	{
		this.mpViews = mpViews;
	}
	
	@Override
	public void destroyItem(View arg0, int arg1, Object arg2)
	{
		View view = mpViews.get(arg1);
		if(null != view)
		{
			((ViewPager)arg0).removeView(view);
		}
	}
	
	@Override
	public int getCount()
	{
		return mpViews.size();
	}
	
	@Override
	public Object instantiateItem(View view, int position)
	{
		((ViewPager)view).addView(mpViews.get(position));
		
		return mpViews.get(position);
	}
	
	@Override
	public boolean isViewFromObject(View arg0, Object arg1)
	{
		return arg0 == arg1;
	}
}

数据的加载不能放在 instantiateItem() 方法中去处理;

以下是数据加载的时机。

@ViewById(R.id.vp_mask_plan)

ViewPager vPager;



vPager.setOnPageChangeListener(new OnPageChangeListener()
		{
			@Override
			public void onPageSelected(int currentPageIndex)
			{
				currentPage = currentPageIndex;
				tvPrg.setText((currentPageIndex + 1) + "/" + dataLen);
				
				
				loadDatas(currentPageIndex);
			}
			
			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2)
			{
			}
			
			@Override
			public void onPageScrollStateChanged(int arg0)
			{
			}
});



private void loadDatas(int position)
	{
		final MyPlanDetail plan = mpDatas.get(position);
		View view = mpViews.get(position);
		ImageView ivPlanCover = (ImageView)view.findViewById(R.id.iv_plan_cover_full);
		TextView tvPlanName = (TextView)view.findViewById(R.id.tv_plan_title);
		TextView tvPlanSchedule = (TextView)view.findViewById(R.id.tv_plan_schedule);
		TextView tvPlanNextTime = (TextView)view.findViewById(R.id.tv_plan_next);
		
		LinearLayout llTitls = (LinearLayout)view.findViewById(R.id.ll_plan_title);
		
		llTitls.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				PlanDetailActivity_.intent(getActivity()).planId(plan.getPlanId()).start();
				aUtils.leftInAnimation(getActivity());
			}
		});
		
		ivPlanCover.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				MyPlanDetailsActivity_.intent(getActivity()).planId(plan.getPlanId()).maskId(plan.getMaskdetail_id()).start();
				aUtils.leftInAnimation(getActivity());
			}
		});
		
		Picasso.with(getActivity()).load(mUtils.formatImgUrl(plan.getIcon())).into(ivPlanCover);
		tvPlanName.setText(plan.getTitle());
		tvPlanSchedule.setText(plan.getCurrentNum() + "/" + plan.getMaskNum());
		
		int nextInterval = plan.getNextInterval();
		tvPlanNextTime.setText(getActivity().getResources().getString(R.string.plan_fragment_plan_next_time_text) + mUtils.getNextTime(nextInterval));
		
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值