
主要用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;//用来装分割的List
int 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);
}
//为每个页面绑定Listview
for (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);
}
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public int getCount() {
return mListViewPager.size();
}
@Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(mListViewPager.get(position));
return mListViewPager.get(position);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {
}
@Override
public void destroyItem(View container, int position, Object arg2) {
ViewPager pViewPager = ((ViewPager) container);
pViewPager.removeView(mListViewPager.get(position));
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
}
源码下载页:http://download.youkuaiyun.com/detail/huxing0215/7017231