读书人

[Android基础] 应用 ExpandableListVi

发布时间: 2012-09-03 09:48:39 作者: rapoo

[Android基础] 使用 ExpandableListView 展现分类数据

ExpandableListView虽然用的比较少,但是在数据分类的时相当有用,QQ列表就是用这个展现QQ分组信息,下面是小小的试用,效果图如下:

[Android基础] 应用 ExpandableListView 展现分类数据

先看看实现需要实现那些东西:

1、需要主要的布局:main.xml

2、需要一个显示父标题的布局:group_view.xml

3、需要一个字显示子内容的布局:child_view.xml

4、需要一个Activity显示

5、需要写一个adapter

【注】group_view.xml、child_view.xml 都可以实现复杂布局,如显示图片或者类似QQ,主要在adapter内代码处理即可


接下来让我们看xml布局了解大概: main.xml 布局,只有一个ExpandableListView,简单,这里要注意id必须使用android内部已有id,如下面代码,不然会报错,原因可能是android ExpandableListView 不是内部一个基本部件,而是在其他view基础上添加修改,为节约内存在其基础上定制,可能会理解错欢迎指教!

public class ExpandablelistviewTestActivity extends ExpandableListActivity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        // 父菜单        ArrayList<String> groupList = new ArrayList<String>();        groupList.add("第1个");        groupList.add("第2个");        groupList.add("第3个");        groupList.add("第4个");        groupList.add("第5个");        // 子菜单        ArrayList<ArrayList<String>> childList = new ArrayList<ArrayList<String>>();        for(int i=1; i<groupList.size() + 1; i++) {        ArrayList<String> tmp = new ArrayList<String>();        tmp.add("第" + i + "-第1个");        tmp.add("第" + i + "-第2个");        tmp.add("第" + i + "-第3个");        childList.add(tmp);        }        // 设置数据适配器        this.setListAdapter(new BaseAdapter(this, groupList, childList));    }@Overridepublic long getSelectedId() {Log.e("getSelectedId", super.getSelectedId() + "");return super.getSelectedId();}@Overridepublic long getSelectedPosition() {Log.e("getSelectedPosition", super.getSelectedPosition() + "");return super.getSelectedPosition();}@Overridepublic void onGroupCollapse(int groupPosition) {Log.e("onGroupCollapse", groupPosition + "");super.onGroupCollapse(groupPosition);}@Overridepublic boolean setSelectedChild(int groupPosition, int childPosition,boolean shouldExpandGroup) {Log.e("setSelectedChild", childPosition + "");return super.setSelectedChild(groupPosition, childPosition, shouldExpandGroup);}@Overridepublic void setSelectedGroup(int groupPosition) {Log.e("setSelectedGroup", groupPosition + "");super.setSelectedGroup(groupPosition);}@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {Log.e("onChildClick", childPosition + "");return super.onChildClick(parent, v, groupPosition, childPosition, id);}@Overridepublic void onGroupExpand(int groupPosition) {Log.e("onGroupExpand", groupPosition + "");super.onGroupExpand(groupPosition);}}
【注】 Log.e 是为了更好看到日记内容,因为展现是红色的哈哈,个人习惯!

大功告成,看看效果把 哈哈~

【附录】源代码


读书人网 >Android

热点推荐