以前
学习ListView的时候就经常要用到自定义适配器的ListView, 这两天看到Mars老师的ExpandableListView教学视频, 但只讲到了最基本使用. 并没有讲到如何定义自己的ExpandableListView, 于是就想类比以前的ListView, 自己定义一个Adapter. 下面就是
程序了, 其实只是实现了最基本的自定义, 如果网友有需要, 完全可以定义属于自己的更炫的界面效果. 代码已添加了简单注释, 如有疑问, 可以留言提出. 如有不足, 欢迎拍砖!
废话不多说, 先上图:
再上代码:
main.xml:定义Activity的界面布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><ExpandableListViewandroid:id = "@+id/expandableListView"android:layout_width = "fill_parent"android:layout_height = "fill_parent"android:drawSelectorOnTop = "false"/> </LinearLayout>
group.xml:定义一级列表的布局方式:
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation = "horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id = "@+id/textView01"android:layout_width = "match_parent"android:layout_height = "match_parent"android:paddingLeft = "60px"android:paddingTop = "10px"android:paddingBottom = "10px"android:textSize = "26sp"/></LinearLayout>
child.xml:定义二级列表的布局方式:
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation = "horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:layout_gravity = "center_vertical"android:id = "@+id/imageView01"android:layout_width = "70px"android:layout_height = "70px"android:paddingLeft = "30px"android:paddingTop = "2px"android:paddingBottom = "5px"android:src = "@drawable/abc"/><TextViewandroid:layout_gravity = "center_vertical"android:id = "@+id/childTo"android:layout_width = "match_parent"android:layout_height = "match_parent"android:paddingLeft = "30px"android:paddingTop = "10px"android:paddingBottom = "5px"android:textSize = "30sp"/></LinearLayout>
ExpandableList.java
package snowfox.expandable;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class ExpandableList extends Activity{@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);ExpandableListView elv = (ExpandableListView)findViewById(R.id.expandableListView);//准备一级列表中显示的数据:2个一级列表,分别显示"group1"和"group2"List<Map<String, String>> groups = new ArrayList<Map<String, String>>();Map<Stri