Android中ExpandableListView控件基本使用
16lz
2022-01-11
本文采用一个Demo来展示Android中ExpandableListView控件的使用,如如何在组/子ListView中绑定数据源。直接上代码如下:
程序结构图:
layout目录下的 main.xml 文件源码如下:
[html] view plain copy- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <!--我们会自己定义listview的显示方式(在另外一个布局文件里边)不用默认的方式
- 如果自定义listview的显示方式这里这个android:id="@id/android:list"必须这样写-->
- <!--android:drawSelectOnTop="false"此属性用来设置listview上的背景颜色会不会
- 挡住(覆盖)内容,如果这是为false就表示不会覆盖掉-->
- <ExpandableListView
- android:id="@id/android:list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:drawSelectorOnTop="false"/>
- </LinearLayout>
包 com.andyidea.demo中ContactsActivity.java源码如下:
- packagecom.andyidea.demo;
- importjava.util.ArrayList;
- importjava.util.List;
- importandroid.app.ExpandableListActivity;
- importandroid.os.Bundle;
- importandroid.view.Gravity;
- importandroid.view.View;
- importandroid.view.ViewGroup;
- importandroid.view.Window;
- importandroid.widget.AbsListView;
- importandroid.widget.BaseExpandableListAdapter;
- importandroid.widget.TextView;
- publicclassContactsActivityextendsExpandableListActivity{
- List<String>group;//组列表
- List<List<String>>child;//子列表
- ContactsInfoAdapteradapter;//数据适配器
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);//设置为无标题
- setContentView(R.layout.main);
- getExpandableListView().setBackgroundResource(R.drawable.default_bg);
- initializeData();
- getExpandableListView().setAdapter(newContactsInfoAdapter());
- getExpandableListView().setCacheColorHint(0);//设置拖动列表的时候防止出现黑色背景
- }
- /**
- *初始化组、子列表数据
- */
- privatevoidinitializeData(){
- group=newArrayList<String>();
- child=newArrayList<List<String>>();
- addInfo("Andy",newString[]{"male","138123***","GuangZhou"});
- addInfo("Fairy",newString[]{"female","138123***","GuangZhou"});
- addInfo("Jerry",newString[]{"male","138123***","ShenZhen"});
- addInfo("Tom",newString[]{"female","138123***","ShangHai"});
- addInfo("Bill",newString[]{"male","138231***","ZhanJiang"});
- }
- /**
- *模拟给组、子列表添加数据
- *@paramg-group
- *@paramc-child
- */
- privatevoidaddInfo(Stringg,String[]c){
- group.add(g);
- List<String>childitem=newArrayList<String>();
- for(inti=0;i<c.length;i++){
- childitem.add(c[i]);
- }
- child.add(childitem);
- }
- classContactsInfoAdapterextendsBaseExpandableListAdapter{
- //-----------------Child----------------//
- @Override
- publicObjectgetChild(intgroupPosition,intchildPosition){
- returnchild.get(groupPosition).get(childPosition);
- }
- @Override
- publiclonggetChildId(intgroupPosition,intchildPosition){
- returnchildPosition;
- }
- @Override
- publicintgetChildrenCount(intgroupPosition){
- returnchild.get(groupPosition).size();
- }
- @Override
- publicViewgetChildView(intgroupPosition,intchildPosition,
- booleanisLastChild,ViewconvertView,ViewGroupparent){
- Stringstring=child.get(groupPosition).get(childPosition);
- returngetGenericView(string);
- }
- //----------------Group----------------//
- @Override
- publicObjectgetGroup(intgroupPosition){
- returngroup.get(groupPosition);
- }
- @Override
- publiclonggetGroupId(intgroupPosition){
- returngroupPosition;
- }
- @Override
- publicintgetGroupCount(){
- returngroup.size();
- }
- @Override
- publicViewgetGroupView(intgroupPosition,booleanisExpanded,
- ViewconvertView,ViewGroupparent){
- Stringstring=group.get(groupPosition);
- returngetGenericView(string);
- }
- //创建组/子视图
- publicTextViewgetGenericView(Strings){
- //LayoutparametersfortheExpandableListView
- AbsListView.LayoutParamslp=newAbsListView.LayoutParams(
- ViewGroup.LayoutParams.FILL_PARENT,40);
- TextViewtext=newTextView(ContactsActivity.this);
- text.setLayoutParams(lp);
- //Centerthetextvertically
- text.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
- //Setthetextstartingposition
- text.setPadding(36,0,0,0);
- text.setText(s);
- returntext;
- }
- @Override
- publicbooleanhasStableIds(){
- //TODOAuto-generatedmethodstub
- returnfalse;
- }
- @Override
- publicbooleanisChildSelectable(intgroupPosition,intchildPosition){
- //TODOAuto-generatedmethodstub
- returntrue;
- }
- }
- }
最后,程序运行后截图如下:
更多相关文章
- Android数据库操作的两种方式
- cordova的android notify消息通知插件
- 解决Android(安卓)Studio Gradle DSL method not found: 'androi
- Funambol android eclipse上的配置及说明
- android Handler使用
- android触摸实现物体运动方式
- Android之添加快捷方式(Shortcut)到手机桌面
- Android编译问题:Only 64-bit build environments are supported
- Android中日志信息的打印方式