android listView多层嵌套listView显示不全问题

来源:互联网 发布:怎样装饰淘宝店铺 编辑:程序博客网 时间:2024/05/17 17:18

最近在做项目,需要用到listVIew多层嵌套listVIew的需求,先发现已下两个处理办法比较好用

第一种:

public class ListViewNesting extends ListView {public ListViewNesting(Context context) {super(context);}public  ListViewNesting(Context context, AttributeSet attrs) {super(context, attrs);}public  ListViewNesting(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}
这个可以很好的解决嵌套时listView显示不全问题,以及子listView中含有异步加载的数据(比如网络图片、网络资料)等时,依然可以完整显示异步刷新
第二种:<span style="font-family: Arial, Helvetica, sans-serif;">重新计算Listview的高度</span><pre name="code" class="java">在一个滑动布局中添加一个滑动控件,滑动控件的高度因为不能计算,所以只能显示一个Item,若要解决这个问题,我们可以重新计算Listview的高度,调用下面的静态方法即可。在setAdapter后调用此方法/** * scrollview嵌套listview显示不全解决 *  * @param listView */public static void setListViewHeightBasedOnChildren(ListView listView) {ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {return;}int totalHeight = 0;for (int i = 0; i < listAdapter.getCount(); i++) {View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0);totalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));listView.setLayoutParams(params);}

但是这个方法,对于异步加载,会存在显示不全问题

0 0