Android ListView 滑动分页

来源:互联网 发布:matlab遍历二维数组 编辑:程序博客网 时间:2024/04/30 20:03

 

主要用ViewPager + ListView 实现,实现思路:ViewPager实现横向分页,在每个页面动态添加固定条目的ListView,(有人会说直接用布局写页面,可是如果每个Item相同且有五六个,适配器绑定数据源就会变得很麻烦)效果已经实现,但个人觉得这个办法还是比较笨的,本人还是菜鸟,希望大神指点。可怜

 

我用的是 GitHub 上大神写自定义ViewPager(https://github.com/JakeWharton/Android-DirectionalViewPager) ,一开始想做垂直的上下滑动分页,可是效果有时可以有时不行,应该是ListView本身的上下滑动与ViewPager垂直滑动冲突了,目前还没有解决,查阅资料是需要截获ListView的OnThouch事件(求教了)。

 

其他的代码都简单,下面附上源码,主要把ViewPager的适配器代码拿出来说一下,思路就是将一个List源分割成页数一样的子List,我这里是设定的每个页面固定六条记录:

 

public class ListViewPagerAdapter extends PagerAdapter {Context context;List<View> mListViewPager = new ArrayList<View>(); // ViewPager对象的内容List<String> list = new ArrayList<String>();   
        List<List<String>> lcontant = null;//用来装分割的Listint pageNum = 1; //初始化页数public ListViewPagerAdapter(Context context, List<String> kf) {int count = 0;  //循环次数int pos = 0;//当前位置this.context = context;this.list = kf;//计算页数pageNum = (int) Math.ceil(list.size() / 6.0);Log.d("hx2", String.valueOf(pageNum));if (Math.ceil(kf.size() / 6.0) == 0) {pageNum = 1; //不足一页按一页算}lcontant = new ArrayList<List<String>>();for (int i = 0; i < pageNum; i++) {Log.d("hx2", String.valueOf(i));List<String> item = new ArrayList<String>();for(int k = pos;k<kf.size();k++){count++;pos = k;item.add(kf.get(k));//每个List六条记录,存满6个跳出if(count == 6){count = 0;pos = pos+1; //从下一条开始break;}}lcontant.add(item);}//为每个页面绑定Listviewfor (int j = 0; j < pageNum; j++) {View viewPager = LayoutInflater.from(context).inflate(R.layout.list, null);ListView mList = (ListView) viewPager.findViewById(R.id.wifi_list);mList.setAdapter(new Myadapter(context, lcontant.get(j)));mListViewPager.add(viewPager);}}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic int getCount() {return mListViewPager.size();}@Overridepublic Object instantiateItem(View container, int position) {((ViewPager) container).addView(mListViewPager.get(position));return mListViewPager.get(position);}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}@Overridepublic void destroyItem(View container, int position, Object arg2) {ViewPager pViewPager = ((ViewPager) container);pViewPager.removeView(mListViewPager.get(position));}@Overridepublic void finishUpdate(View arg0) {// TODO Auto-generated method stub}}

 

源码下载页:http://download.csdn.net/detail/huxing0215/7017231
 

0 0