码迷,mamicode.com
首页 > 其他好文 > 详细

viewpager 的简单应用

时间:2015-09-06 13:15:09      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

viewpager循环的简单利用  如viewpager数量很大,BasePagerAdapter不能很大的数据,就可以通过循环利用的方式来解决,viewpager总是会预加载后面的界面,所以要让控件本身去找到对于的view和数据

package cn.new1.cloudnurse.pregnancy.main.adapter;
public class WikipediaPagerAdapter extends BasePagerAdapter{
 
    //布局的view
 private List<ScrollView> contentViewList = new LinkedList<ScrollView>();
 private int pagerCount;    //循环的个数
 Context context;
 
 public WikipediaPagerAdapter(Context context, int pagerCount) {
  this.context = context;
  this.pagerCount = pagerCount;// * 2;
  for (int i = 0; i < pagerCount; i++) {
   ScrollView scrollView =  (ScrollView) View.inflate(context, R.layout.wikipedia_pager_item, null);
   contentViewList.add(scrollView);
  }
 }
 
 WikiPediaData date;
 @Override
 public void draw(int arg0, Object arg1) {
//  WikiPediaData date;
  try {
   JSONObject jsonObject = new JSONObject((String)arg1);
   date = new WikiPediaData();
   date.date = jsonObject.optString("currentDate");
   date.babychange = jsonObject.optString("v_baby_changes");
   date.momchange = jsonObject.optString("v_mom_changes");
   
   showView(date);
  } catch (JSONException e) {
   e.printStackTrace();
  }
  
 }
 
 private void showView(final WikiPediaData date){
  //获取对应数据的view然后加载数据显示
  ScrollView scrollView = contentViewList.get(date.index%pagerCount);
  
  dateTv = (TextView) scrollView.findViewById(R.id.wikipedia_date);
  babyChangeTv = FindView.byId(scrollView, R.id.wikipedia_baby_change);
 });
  
  dateTv.setText(date.date);
  babyChangeTv.setText(date.babychange);
 }
 
 
 
 
 @Override
 public int getCount() {
  return PregnancyParam.GESTATIONAL_DAY_COUNT;    //无数个确保viewpager的数量可以一直累计
 }
 @Override
 public boolean isViewFromObject(View view, Object obj) {
  return view == obj;
 }
 private TextView dateTv;   //日期
 private TextView babyChangeTv; //宝贝变化
 
 
 public static int indexCurrent = 0;
 @Override
 public Object instantiateItem(View view, int index) {
  //要初始化的view
  ViewGroup parent = (ViewGroup) contentViewList.get(index%pagerCount).getParent();
          
  WikiPediaDb db = new WikiPediaDb(context);
  WikiPediaData tmpData = db.getContactList(index+"");
  
  if (parent != null) {    //循环队列加载 部分内存会相同 最好确保不能相邻 viewpager内存实时缓存3个界面
   
  } else {
   ((ViewPager) view).addView(contentViewList.get(index%pagerCount),0);
  }
  
  indexCurrent = index%pagerCount;
  
  return contentViewList.get(index%pagerCount);
 }
 @Override
 public void destroyItem(View view, int index, Object obj) {
  ((ViewPager) view).removeView(contentViewList.get(index%pagerCount));  //移除view
 }
 
 @Override
 public int getItemPosition(Object object) {
  // TODO Auto-generated method stub
  return POSITION_UNCHANGED;
 }
 
 
}

viewpager 的简单应用

标签:

原文地址:http://my.oschina.net/u/274829/blog/501590

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!