Android:Listview中嵌套viewpager的实现总结
来源:互联网 发布:dns服务器的端口 编辑:程序博客网 时间:2024/06/11 21:03
最近在做一个项目需要在listView中嵌套viewPager作为第一项,效果如下:
上面的布局就是一个listView,在实现过程中遇到了以下问题:
1.listView中第一项为viewPager,其他项为单独包含两种数据类型,导致listView布局混乱。
2.viewPager与listView的滑动冲突
3.viewPager的监听器在viewPager切换的时候,进入了onPageChang方法但界面上没有显示相应的页码刷新。
针对问题1,查资料后发现当listView中的item类型超过一项时,需要重载方法
- @Override
- public int getViewTypeCount() {
- return 2;
- @Override
- public int getItemViewType(int position) {
- return position > 0 ? 0 : 1;
针对问题2,上网搜索后发现了两种解决办法:
(1)重写listView
- public class MyListView extends ListView {
- private GestureDetector mGestureDetector;
- View.OnTouchListener mGestureListener;
- public MyListView(Context context) {
- super(context);
- }
- public MyListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- mGestureDetector = new GestureDetector(new YScrollDetector());
- setFadingEdgeLength(0);
- }
- public MyListView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
- }
- class YScrollDetector extends SimpleOnGestureListener {
- @Override
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
- if(distanceY!=0&&distanceX!=0){
- }
- if(Math.abs(distanceY) >= Math.abs(distanceX)) {
- return true;
- }
- return false;
- }
- }
- }
(2)重写ViewPager
- public class MyViewPager extends ViewPager {
- public MyViewPager(Context context) {
- super(context);
- }
- public MyViewPager(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- getParent().requestDisallowInterceptTouchEvent(true);//这句话的作用 告诉父view,我的单击事件我自行处理,不要阻碍我。
- return super.dispatchTouchEvent(ev);
- }
- }
针对问题3
发现我把viewPager的监听器写在了listView的getView中,导致多次加载监听器,出现监听器不管用的问题。把OnPageChangeListener监听器放在初始化的时候就可以正常刷新了。
demo下载地址:http://download.csdn.net/detail/zglslyg/7270961
有不清楚的可以留言。
0 0
- Android:Listview中嵌套viewpager的实现总结
- listview中嵌套viewpager的实现总结
- listview中嵌套viewpager的实现总结
- listview中嵌套viewpager的实现总结
- android中viewpager,scrollview、listview的嵌套问题
- Viewpager中嵌套ListView
- Viewpager中嵌套ListView问题
- Android:ScrollView中嵌套ViewPager和ListView示例
- Android在ScrollView中嵌套ViewPager以及ListView的可能出现的问题以及解决方案
- Android ListView嵌套ListView的实现方式
- Android ListView嵌套ListView的实现方式
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- listView中嵌套viewpager随着listview滚动
- Viewpager中嵌套Listview,而且Listview的item中夹杂ViewPager
- Viewpager中嵌套Listview,而且Listview的item中夹杂ViewPager
- 【Android界面实现】解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题
- 【Android界面实现】解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题
- java设计模式(三)---建造者模式
- ios之下拉刷新上拉加载更多
- 那种好美好。爱情这东西,这她妈的不靠谱
- JSON.parse()和JSON.stringify()
- Haproxy的详解和配置
- Android:Listview中嵌套viewpager的实现总结
- SODBASE CEP学习(四)续:类SQL语言EPL与Storm或jStorm集成-滑动窗口
- 几个搭建环境的问题,留个记录
- Log4j详细配置(转)
- Jenkins配置脚本打渠道包
- github上值得关注的前端项目
- allegro 16.x 镜像整个模块的方法
- input text 的事件及方法
- eclipse 技巧