Android项目技术总结:主界面中ListView装载数据并结合手势进行翻页
2012-02-28 13:42
531 查看
该项目中的数据通过ListView来呈现,并且通过手势可以进行翻页。具体步骤:
一、自定义ListView,增加手势;
二、自定义Adapter,固定每页显示的条目数量;
三、编写业务逻辑
通过一个Demo来观察具体的实现:
一、自定义ListView
1、首先定义两个接口,一个向前翻页,一个向后翻页:
2、新建IListView类,继承ListView,并注册这两个接口:
3、重写performItemClick和onTouchEvent方法,确定手势的轨迹:
4、增加手势:
二、自定义Adapter
因为Demo对数据没什么监听要求,所以Adapter很简单,只是规定了每个页面返回的记录条数。
其中的生成view的方法:
三、业务逻辑的实现
其中数据加载方法initData():
可以看出业务逻辑实现的顺序:
1、备注1,当我们要翻到下一页,这里的pageid便会加1,。
2、备注2,因为pageid自加了1,于是这里的for循环得到的数据变为10-19,为第二页的数据。
3、备注3,因为备注2的方法中的adapter更新,于是这里的一些值将会被重新赋新值,即相应的页面对应的条数。
4、备注4,当备注3的值赋好后,这里规定生成10条记录。
至此,新的一页便产生了,往前是一样的逻辑。
最后奉上Demo代码:http://download.csdn.net/detail/duancanmeng/4096458
一、自定义ListView,增加手势;
二、自定义Adapter,固定每页显示的条目数量;
三、编写业务逻辑
通过一个Demo来观察具体的实现:
一、自定义ListView
1、首先定义两个接口,一个向前翻页,一个向后翻页:
public interface OnPrevPageListener { void onPrevPage(); } public interface OnNextPageListener { void onNextPage(); }
2、新建IListView类,继承ListView,并注册这两个接口:
public void setPervPageListener(OnPrevPageListener pervPageListener) { this.pervPageListener = pervPageListener; } public void setNextPageListener(OnNextPageListener nextPageListener) { this.nextPageListener = nextPageListener; }
3、重写performItemClick和onTouchEvent方法,确定手势的轨迹:
@Override public boolean performItemClick(View view, int position, long id) { int m=mTouchSize; mTouchSize=0; if(m > MAXTouchSize){ return true; }else{ return super.performItemClick(view, position, id); } } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE && event.getHistorySize() > mTouchSize) { mTouchSize = event.getHistorySize(); } mDetector.onTouchEvent(event); return super.onTouchEvent(event); }
4、增加手势:
private class IGestureListener extends SimpleOnGestureListener{ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) { if (e1.getX() - e2.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) { if(nextPageListener!=null){ nextPageListener.onNextPage(); IListView.this.startAnimation(nextanim); } } else if (e2.getX() - e1.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) { if(pervPageListener!=null){ pervPageListener.onPrevPage(); IListView.this.startAnimation(pervanim); } } return false; } }
二、自定义Adapter
因为Demo对数据没什么监听要求,所以Adapter很简单,只是规定了每个页面返回的记录条数。
static int pageCount = 10; @Override public int getCount() { // TODO Auto-generated method stub return pageCount; //备注4 }
其中的生成view的方法:
@Override public View getView(int position, View convertView, ViewGroup parent) { convertView = (LinearLayout) inflater.inflate(layoutId, null); TextView listid = (TextView)convertView.findViewById(ids[0]); listid.setText(data.get(position+(FlipListDemo.pageid-1)*pageCount).get(strs[0]).toString()); //备注3 TextView listvalue = (TextView)convertView.findViewById(ids[1]); listvalue.setText(data.get(position+(FlipListDemo.pageid-1)*pageCount).get(strs[1]).toString()); return convertView; }
三、业务逻辑的实现
iList.setPervPageListener(new OnPrevPageListener() { public void onPrevPage() { if(pageid>1){ pageid--; initData(); } } }); iList.setNextPageListener(new OnNextPageListener() { public void onNextPage() { if(pageid<10){ pageid++; //备注1 initData(); } } });
其中数据加载方法initData():
private void initData() { for (int i = (pageid-1)*10; i < pageid*10; i++) { //备注2 HashMap<String,String> map = new HashMap<String,String>(); map.put("id", i+""); map.put("value", "i want "+i); list.add(map); } page.setText(pageid+""); adapter.notifyDataSetChanged(); }
可以看出业务逻辑实现的顺序:
1、备注1,当我们要翻到下一页,这里的pageid便会加1,。
2、备注2,因为pageid自加了1,于是这里的for循环得到的数据变为10-19,为第二页的数据。
3、备注3,因为备注2的方法中的adapter更新,于是这里的一些值将会被重新赋新值,即相应的页面对应的条数。
4、备注4,当备注3的值赋好后,这里规定生成10条记录。
至此,新的一页便产生了,往前是一样的逻辑。
最后奉上Demo代码:http://download.csdn.net/detail/duancanmeng/4096458
相关文章推荐
- Android项目技术总结:主界面中ListView装载数据并结合手势进行翻页
- Android中对ListView、RecycleView里面的数据进行排序方法总结
- 《磨砺书店》app项目开发技术点总结(磨砺营马剑威Android)
- Android中直播视频技术探究之---采集摄像头Camera视频源数据进行推流(采用金山云SDK)
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- Android项目Tab类型主界面大总结
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- android结合异步任务,动态加载图片,Json解析数据展示在ListView,并且实现按日期分类展示,借口回调
- Android项目Tab类型主界面大总结
- Android项目技术总结:获取状态栏和标题栏并计算长宽来限制绘制浮动窗口活动范围
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- 第一个androidAPP项目总结—数据请求
- Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作
- Android项目Tab类型主界面大总结
- android项目中常用技术-自我总结二
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- Android项目技术总结:获取状态栏和标题栏并计算长宽来限制绘制浮动窗口活动范围
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager