Aandroid在ViewPager中添加ListView

最近的项目中碰到一个需要横竖都能滑动的页面效果,如同手机qq的好友菜单界面(如下图),可以通过选项卡来选择需要的界面,也可以通过屏幕手指的滑动来实现,而每一个分页面的内容对应的是一个可以上下滑动的ListView,所以最后结合起来的效果是,在页面中可以上下滑动,在各个分页之间可以左右滑动。

对于这个效果有两种方案,一种是通过TabActivitiy来实现,将选项卡设置为TabActibitiy的标志,通过将需要的分页加载到Tab的各个标志中去,但是这种方法,由于每一次切换选项卡的时候都会重新去创建一个新Activity的实例,所以当界面很多时切换会很迟钝,同时这种方法不能实现屏幕手指滑动来切换界面。

另外一种就是今天要讲的,在ViewPager中添加ListView。

先说ViewPager,ViewPager是google官方提供的一个兼容低版本android设备的软件包,

ViewPager的主要功能是使视图左右滑动,单纯ViewPaager添加静态页面的教程可以在网上搜到,这里只是简单介绍:(看不太懂的请参考其他ViewPager教程)

<android.support.v4.view.ViewPagerandroid:id="@+id/heroPager"android:layout_width="fill_parent"android:layout_height="wrap_content"/>2.加载要显示的选项卡

<pre name="code" class="java" style="color: rgb(70, 70, 70); font-size: 14px; line-height: 21px; text-indent: 28px;"><span style="font-family: 宋体;">//这个方法从viewPager中移动当前的view。</span> public void destroyItem(View container, int position, Object object){} //这个方法返回一个对象,该对象表明PagerAapter选择哪个对象放在当前的ViewPager中。public Object instantiateItem(View container, int position){} //返回当前分页数。 public int getCount() { return mListViews.size(); } //该方法判断是否由该对象生成界面。 public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; }

viewPager.setAdapter(new HeroPagerAdapter(viewList));

好了,以上是在ViewPager中添加常规的静态界面的方法,对于listview,是需要设置适配器的,listview本身也是一个动态的组件,下面将介绍如何在ViewPager中添加动态的listview。

同样的,要先在布局文件中加入ViewPager组件,同以上步骤1.

第二步,也是最重要的一步。

前几个操作和以上是一样的,先声明一个LayoutInflater对象:LayoutInflater inflater = getLayoutInflater();获取viewPager组件:viewPager = (ViewPager) findViewById(R.id.heroPager);创建一个list对象:viewList = new ArrayList<View>();

这里,我曾经试过如下方法,,都是错误的,希望大家引起注意:

直接通过强制类型转换,将View对象转换为ListView对象:

这个方法编译可以通过,但是在运行时系统会报出一个类型转换的错误!

this.findviewById();

也可以简化如下:

ListView listView1 = (ListView) (inflater.inflate(R.layout.hero_list, null)).findViewById(R.id.heroList);

ListView listView2 = (ListView) (inflater.inflate(R.layout.hero_list, null)).findViewById(R.id.heroList);

SimpleAdapter simpleAdapter_Wu = new SimpleAdapter(this, herolist_wu,R.layout.hero_info,new String[]{"heroImage", "heroName"},new int[]{R.id.heroImage, R.id.heroName}); SimpleAdapter simpleAdapter_Shu = new SimpleAdapter(this, herolist_shu,R.layout.hero_info,new String[]{"heroImage", "heroName"},new int[]{R.id.heroImage, R.id.heroName}); listView1.setAdapter(simpleAdapter_Wu); listView2.setAdapter(simpleAdapter_Shu);

到这里,就和以上的不一样了!!

有一种旅行,叫单车旅行。它没有奢侈准备,

Aandroid在ViewPager中添加ListView

相关文章:

你感兴趣的文章:

标签云: