viewpager 的简单应用

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;
 }
 
 
}
时间: 2024-12-24 14:52:49

viewpager 的简单应用的相关文章

ViewPager的简单用法+适配器+监听器的介绍

之前的actionbar+fragment文章中写过viewpager的简单用法,但因为是融合的文章,所以今天把viewpager提取出来写了.方便查询浏览~ 思路: 1.在布局文件中设置viewpager控件 2.在acitvity中找到它 3.自定义一个适配器,这个适配器需要一个list<View>来构造 4.定义一个list<View>来放入几个view,并用其来初始化适配器 5.给viewPager来设置适配器和监听器 实现: 1.布局文件,这里放一个指示文字.实际中可以用

Android随笔--使用ViewPager实现简单地图片的左右滑动切换

Android中图片的左右切换随处可见,今天我也试着查阅资料试着做了一下,挺简单的一个小Demo,却也发现了一些问题,话不多说,上代码~: 使用了3个xml文件作为ViewPager的滑动page,布局都是相同的,如下只展示其中之一: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/

android学习ViewPager的简单使用

使用ViewPager需要引入android.support.v4.View.ViewPager这样的jar包,谷歌公司为解决当前版本碎片化的问题,提供的兼容的包.主要目的就是解决向下兼容问题. 1,加载显示的页卡 将layout布局转换成view对象 (1)LayoutInflater if= getLayoutInflater().from(this); if.inflater(resource,root); (2) View.inflate(context,resource,root);

ViewPager的简单用法

1.首先要在layout写一个xml文件,写关于ViewPager的一个标签的xml文件 activity_main.xml <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/viewpager" android:layout_width="match_parent" a

TabLayout+ViewPager的简单使用

1.   build.gradle文件中加入 compile 'com.android.support:design:22.2.0' 2.写Xml文件,注意TabLayout的三个属性 app:tabIndicatorColor="#0f0"                每个tab下方的下划线的颜色    app:tabSelectedTextColor="#00f"             被选中的tab的文本颜色app:tabTextColor="#

Android开发之ViewPager的简单使用

ViewPager是V4包中的,如果你的编译器敲不出ViewPager,那么你就需要添加,看下面: 第一步:点击+号 第二步:选择第一个Library 第三步:添加这个包: 然后点击ok-->ok就搞定了,编译器会从新进行预编译. 下面就是重点了,我们先看布局文件: 1 <android.support.v4.view.ViewPager 2 android:id="@+id/ViewPager" 3 android:layout_width="match_par

ViewPager+Fragment简单讲解

对于加载多个视图的容器,一般来说都是需要用Adapter来让系统自动加载,因为方便.不然自己写代码一个一个的加载那多麻烦啊,对吧? 同样,对于ViewPager,它也是加载多个视图的,因此也需要有对应的Adapter来进行视图的加载. 关于Adapter,是连通数据和视图容器的桥粱.Adapter根据数据生成一个视图,Adapter对视图容器的作用是加载对应的视图进去容器中.(我个人习惯喜欢把装载多个视图的控件成为容器) MainActivity代码: package com.example.v

Android ViewPager的简单使用

package test.view.weitop; public class AnimActivity extends BaseActivity { private View vline; private int width = 0; private ViewPager mViewPager; private PagerTabStrip pagerTabStrip; private Button leftBtn,rightBtn; private int[] drawableResIds = {

Android开发实战之ViewPager的轮播

在安卓开发的许多控件中,如果你没有使用过ViewPager,就不能算是一个安卓开发工程师,在本篇博文中,我会总结ViewPager的使用方法, 以及一些开发中的拓展.希望本篇博文对你的学习和工作有所帮助. **ViewPager的基本使用** ViewPager的使用遵循MVC模式,M(模型),V(视图),C(控制器).模型就是viewpager对象,视图就是xml视图,控制器就是适配器adapter.所以, 要实现一个完整的ViewPager这三个东西一个都不能少. xml: <?xml ve