关闭

在ListView中嵌套ListView的事件处理

144人阅读 评论(0) 收藏 举报
分类:

前天在工作中遇到在ListView中的Item需要用ListView来展现处理后的内容,然后就遇到了一个很头疼的问题,作为Item的ListView没法进行滑动,而且显示也不正常,只是显示几个子Item。不能将子Item全部显示,原因是在控件绘制出来之前要对ListView的大小进行计算,要解决将子ListView全部显示出来的问题,就是重新计算一下其大小告知系统即可。后面这个问题比较好解决,网上已经给出解决方案:

前辈们给出了一个方法,重新计算子ListView的大小,然后在设置本ListView的Adapter之后运行这个方法就好了,具体代码如下:

    

01 /**
02  
03      * 设置Listview的高度
04  
05      */ 
06  
07     public voidsetListViewHeight(ListView listView) {  
08  
09         ListAdapter listAdapter = listView.getAdapter();   
10  
11         if(listAdapter == null) {  
12  
13             return;  
14  
15         }  
16  
17         inttotalHeight = 0;  
18  
19         for (inti = 0; i < listAdapter.getCount(); i++) {  
20  
21             View listItem = listAdapter.getView(i, null, listView);  
22  
23             listItem.measure(00);  
24  
25             totalHeight += listItem.getMeasuredHeight();  
26  
27         }  
28  
29         ViewGroup.LayoutParams params = listView.getLayoutParams();  
30  
31         params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));  
32  
33         listView.setLayoutParams(params); 
34  
35     }

但是这个方法设置的item的Layout必须是带有onMeasure()方法的控件,否则在计算的时候会报错,建议使用LinearLayout

再一个思路相同,但是,不是额外做方法来实现onMeasure()方法的计算LIstView的大小,而是自己继承ListView,重写ListView的onMeasure()方法,来自己计算ListView的高度,然后再xml中直接使用这个自定义的ListView就可以了。

01 public class MyListView extendsListView {
02  
03     public MyListView  (Context context, AttributeSet attrs) {
04  
05         super(context, attrs);
06  
07     }
08  
09     public MyListView  (Context context) {
10  
11         super(context);
12  
13     }
14  
15     public  MyListView  (Context context, AttributeSet attrs, intdefStyle) {
16  
17         super(context, attrs, defStyle);
18  
19     }
20  
21     @Override
22  
23     public void onMeasure(int widthMeasureSpec, intheightMeasureSpec) {
24  
25         intexpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
26  
27                 MeasureSpec.AT_MOST);
28  
29         super.onMeasure(widthMeasureSpec, expandSpec);
30  
31     }
32  
33 }

这是解决让作为Item的ListView显示全部内容的方案,但是有些时候我们是想让作为Item的ListView不用全部显示,而是可以进行滑动,要解决这个问题就需要了解一下android对事件的分发机制了

原文地址: http://blog.csdn.net/subaohao/article/details/8250186



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

开发中常常需要自己定义Listview,去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。 如果你的自定义Li...
  • qq446282412
  • qq446282412
  • 2015-07-07 17:31
  • 2546

Android 解决 ListView的item中嵌套ScrollView,ScrollView拦截ListView的Item点击事件的解决办法

前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollVie...
  • jky_yihuangxing
  • jky_yihuangxing
  • 2016-10-28 14:36
  • 857

Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法

1.解决思路             当我们使用ListView嵌套ViewPager时,会出现滑动事件的冲突,我们都知道,Viewpager自己也有滑动的功能,ListView也有滑动的...
  • yanxiaosa
  • yanxiaosa
  • 2016-09-20 13:46
  • 1786

关于ListView嵌套ListView,外层Item点击事件的冲突解决

最近碰到ListView嵌套ListView,最外层的ListView的OnItemClickListener在点击里层ListView的item的时候不响应,在网上查到诸多资料,大部分说在子List...
  • XiaoRouniao
  • XiaoRouniao
  • 2017-06-17 11:28
  • 422

ScrollView里嵌套ListView(或者gridview)时,内部控件滑动时外部控件也会动的异常处理

转载地址:http://www.eoeandroid.com/thread-246995-1-1.html 按常理,ScrollView套ListView会存在两个问题: 1....
  • u012587005
  • u012587005
  • 2016-04-19 14:53
  • 425

[Android]在ListView嵌套GridView中出现的点击事件处理以及gridview显示不全的问题

写这篇博文也是出于偶然看到自己很久以前写的一堆“烂码”,目的是为了实现一个ListView中能够嵌入GridView的功能,为了展示图文的一个Item,这是一个很普通的功能,但在那时候什么都不懂的我还...
  • sunjundelove
  • sunjundelove
  • 2015-08-22 14:27
  • 3540

在ListView嵌套GridView中出现的点击事件冲突的处理以及gridview显示不全的问题

写这篇博文也是出于偶然看到自己很久以前写的一堆“烂码”,目的是为了实现一个ListView中能够嵌入GridView的功能,为了展示图文的一个Item,这是一个很普通的功能,但在那时候什么都不懂的我还...
  • u011251014
  • u011251014
  • 2015-11-10 20:48
  • 1262

利用事件分发机制解决ScrollView嵌套ListView滑动冲突

记得以前面试的时候,面试官问了ScrollView嵌套ListView使用的问题。那么ScrollView嵌套ListView使用会出现什么效果呢? 如布局文件如下: <RelativeLayout...
  • Mr_wzc
  • Mr_wzc
  • 2016-06-28 21:17
  • 4398

ListView中嵌入布局的Button或多个点击事件

ListView中嵌入布局的多个点击事件有时候在ListView嵌入的布局中有多个事件需要点击,比如一个item中有TextView和Button两个布局,当我们需要获取这两个点击事件时,我们应该如何...
  • qq_27630169
  • qq_27630169
  • 2016-08-11 11:24
  • 4832

Android开发中ListView与EditText的冲突汇总

在Android开发中,有时候会遇到ListView中嵌套了一些EditText的情况,这个时候很容易发生一些冲突问题,解决方案列举如下。 点击EditText弹出软键盘导致Ed...
  • IT_ZJYANG
  • IT_ZJYANG
  • 2016-10-13 18:21
  • 3480
    个人资料
    • 访问:146742次
    • 积分:2378
    • 等级:
    • 排名:第18093名
    • 原创:54篇
    • 转载:262篇
    • 译文:2篇
    • 评论:14条
    最新评论