在ListView中嵌套ListView的事件处理

转载 2016年08月30日 15:57:18

前天在工作中遇到在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



举报

相关文章推荐

在ListView中嵌套ListView的事件处理

在ListView中嵌套ListView的事件处理         前天在工作中遇到在ListView中的Item需要用ListView来展现处理后的内容,然后就遇到了一个很头疼的问题...

在ListView中嵌套ListView的事件处理

前天在工作中遇到在ListView中的Item需要用ListView来展现处理后的内容,然后就遇到了一个很头疼的问题,作为Item的ListView没法进行滑动,而且显示也不正常,只是显示几个子Ite...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

在ListView中嵌套ListView的事件处理

转载地址:http://my.oschina.net/zhibuji/blog/70892   前天在工作中遇到在ListView中的Item需要用ListView来展现处理后的内容,然后就...

在ListView中嵌套ListView的事件处理

谢谢http://my.oschina.net/zhibuji/blog/70892 原文作者,帮我解决了大问题。祝你早日成为牛逼工程师   在工作中遇到在ListView中的Item需要用Lis...

ScrollView嵌套ListView处理事件冲突

当ListView嵌套在ScrollView中时会有两个问题 列表内容显示不全 滑动事件冲突 第一个问题可以参考ScrollView与ListView嵌套仿微博个人主页中的解决方法。第二个问题就是下面...

ListView中嵌套ListView

ListView中嵌套ListView,就是在父ListView的Item中有ListView。和平常的设置适配器是一样的。但是这么做,子ListView只显示一项。要解决将子ListView全部显示...

ListView中嵌套listView

在工作中遇到在ListView中的Item需要用ListView来展现处理后的内容,然后就遇到了一个很头疼的问题,作为Item的ListView没法进行滑动,而且显示也不正常,只是显示几个子Item。...

ListView嵌套ListView

listStockAdapter = new ListStockAdapter(linkedPlansBeans); lv_detailstrategy.setAdapter(listStockAd...

在ScrollView中嵌套ListView

探讨:如何在ScrollView中嵌套ListView 作者: 字体:[增加 减小] 类型:转载 本篇文章是对如何在ScrollView中嵌套ListView的解决方法进行了详细的...

在ScrollView中嵌套ListView

零用钱的首页面中使用了这种布局,刚开始会疑惑怎么会有这种奇怪的布局,ScrollView和ListView都是滚动结构,按理来说,这两个控件在UI上可以实现相同的功能,ScrollView中只能放一个...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)