这几个文件是我从某位大神的简书上得来的,但是一时找不到这位仁兄,如果看到,请联系我,我将注明转载地址。(本人新人)
前段时间公司要开发一个软件产品,项目经理和我们的设计狮发过来一份UI,看到这份UI当时我的想法是想给设计狮下点含笑半步癫的。。。她居然给我弄了个双重嵌套listview 的布局过来。。但是咱不能对妹子这么粗鲁,和项目经理交涉无果,还是得上。
首先listview 嵌套listview 会涉及到内层listiew 的高度 问题,情况就是里面的listview 只显示了几个,显示不全,我之前在网上找的解决方法就是重写listview
public class MyListView extends ListView { public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
主要就是重写onMeasure这个方法来重新计算高度。好了 ,显示不全的问题是解决了 ,但是我们还会碰到另外一个问题:无法使用适配器的缓存。双重嵌套的listview,我们
无法使用viewholder,convertView的缓存,数据稍大,就是自动GC。好嘛,前面全是无用功了。后面我到处找解决的方案,几经波折,得到了这一套
解决的代码。FullListView 是主要代码,不用更改,可以查看其中我的演示代码。这个东西唯一不好的就是刷新的时候有点困难 ,我是没有解决。你们看看
资源还在上传,我会补充,不急,
https://download.csdn.net/download/a260724032/10441994 应该是这个下载地址,