ViewPager数据加载错乱的问题

来源:互联网 发布:怎么购买备案域名 编辑:程序博客网 时间:2024/06/07 23:11
利用ViewPager作了一个滑动页面,发现里面的图片和对应的页数都是错乱的,后来发现是在调用方法的地方不对,因此记录下来,希望对大家有用
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));            }  


阅读全文
0 0