ViewPager数据加载错乱的问题

来源:互联网 发布:运动控制软件有哪些 编辑:程序博客网 时间:2024/05/21 06:50

这几天,利用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;}@Overridepublic void destroyItem(View arg0, int arg1, Object arg2){View view = mpViews.get(arg1);if(null != view){((ViewPager)arg0).removeView(view);}}@Overridepublic int getCount(){return mpViews.size();}@Overridepublic Object instantiateItem(View view, int position){((ViewPager)view).addView(mpViews.get(position));return mpViews.get(position);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1){return arg0 == arg1;}}

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

以下是数据加载的时机。

@ViewById(R.id.vp_mask_plan)ViewPager vPager;vPager.setOnPageChangeListener(new OnPageChangeListener(){@Overridepublic void onPageSelected(int currentPageIndex){currentPage = currentPageIndex;tvPrg.setText((currentPageIndex + 1) + "/" + dataLen);loadDatas(currentPageIndex);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2){}@Overridepublic 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(){@Overridepublic void onClick(View v){PlanDetailActivity_.intent(getActivity()).planId(plan.getPlanId()).start();aUtils.leftInAnimation(getActivity());}});ivPlanCover.setOnClickListener(new OnClickListener(){@Overridepublic 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));}


0 0
原创粉丝点击