AKever

导航

Android(1)-ListView && ExpandableListView 动态设置Height

Android:ListView && ExpandableListView 动态设置Height

首先是实现的工具类:ScrollViewUtil.java

public class ScrollViewUtil {
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            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);
    }
}

1.以下是普通的ListView对ScrollViewUtil.java工具类的使用:ListView

adapter = new ListAdapter(this, examList);
examList.setAdapter(adapter);
ScrollViewUtil.setListViewHeightBasedOnChildren(examList);

2.以下是ExpandableListView 对ScrollViewUtil.java工具类的使用:ExpandableListView 

expListAdapter = new MyExpandableListAdapter(this, eProListGroup,
                    eProListChild);
lvEngineerPros.setAdapter(expListAdapter);
lvEngineerPros.setOnGroupExpandListener(new onGroupExpandListenerImpl());
lvEngineerPros.setOnGroupCollapseListener(new onGroupCollapseListenerImpl());//组关闭的操作
ScrollViewUtil.setListViewHeightBasedOnChildren(lvEngineerPros);

下面是 onGroupExpandListenerImpl 和 onGroupCollapseListenerImpl的实现

private class onGroupExpandListenerImpl implements OnGroupExpandListener {
    public void onGroupExpand(int groupPosition) {
        ScrollViewUtil.setListViewHeightBasedOnChildren(lvEngineerPros);
    }
}

private class onGroupCollapseListenerImpl implements OnGroupCollapseListener {
    public void onGroupCollapse(int groupPosition) {
         ScrollViewUtil.setListViewHeightBasedOnChildren(lvEngineerPros);

    }
}

--ExpandableListView 的事件触发实现

eListView.setOnChildClickListener(new OnChildClickListener());//子被选中
eListView.setOnGroupClickListener(new OnGroupClickListener());//分组被选中
eListView.setOnGroupExpandListener(new OnGroupExpandListener());//组展开操作
eListView.setOnGroupCollapseListener(new OnGroupCollapseListener());//组关闭的操作

以上事件,如需实现,参考组展开组关闭.

posted on 2014-01-10 11:34  AKever  阅读(837)  评论(1)    收藏  举报