本文主要是介绍ExpandableListView的简单例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近一段时间参考网上的例子,做了一下简单的 ExpandableListView,现在和大家共享一下:
1:main.xml的内容
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/linearLayout"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- androidrientation="vertical"
- >
- <ExpandableListView
- android:id="@+id/expandableListView"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
显示一个ExpandableListView
2:ExpandableListViewDemo 类的内容
- package com.chama.expandablelistviewdemo;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Gravity;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AbsListView;
- import android.widget.BaseExpandableListAdapter;
- import android.widget.ExpandableListView;
- import android.widget.TextView;
- public class ExpandableListViewDemo extends Activity {
- //定义两个List,用来存放控件中Group/Child中的String
- private List<String> groupArray;
- private List<List<String>> childArray;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //对这两个List进行初始化,并插入一些数据
- groupArray = new ArrayList<String>();
- childArray = new ArrayList<List<String>>();
- groupArray.add("第一行");
- groupArray.add("第二行");
- List<String> tempArray = new ArrayList<String>();
- tempArray.add("第一条");
- tempArray.add("第二条");
- tempArray.add("第三条");
- for(int index = 0; index <groupArray.size(); ++index)
- {
- childArray.add(tempArray);
- }
- //给定义好的ExpandableListView添加上Adapter
- ExpandableListView expandableListView = (ExpandableListView)findViewById(R.id.expandableListView);
- ExpandableAdapter adapter = new ExpandableAdapter(this);
- expandableListView.setAdapter(adapter);
- }
- //定义ExpandableListView的Adapter
- public class ExpandableAdapter extends BaseExpandableListAdapter
- {
- Activity activity;
- public ExpandableAdapter(Activity a)
- {
- activity = a;
- }
- public Object getChild(int groupPosition, int childPosition)
- {
- return childArray.get(groupPosition).get(childPosition);
- }
- public long getChildId(int groupPosition, int childPosition)
- {
- return childPosition;
- }
- public int getChildrenCount(int groupPosition)
- {
- return childArray.get(groupPosition).size();
- }
- public View getChildView(int groupPosition, int childPosition,
- boolean isLastChild, View convertView, ViewGroup parent)
- {
- String string = childArray.get(groupPosition).get(childPosition);
- return getGenericView(string);
- }
- // group method stub
- public Object getGroup(int groupPosition)
- {
- return groupArray.get(groupPosition);
- }
- public int getGroupCount()
- {
- return groupArray.size();
- }
- public long getGroupId(int groupPosition)
- {
- return groupPosition;
- }
- public View getGroupView(int groupPosition, boolean isExpanded,
- View convertView, ViewGroup parent)
- {
- String string = groupArray.get(groupPosition);
- return getGenericView(string);
- }
- // View stub to create Group/Children 's View
- public TextView getGenericView(String string)
- {
- // Layout parameters for the ExpandableListView
- AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
- ViewGroup.LayoutParams.FILL_PARENT, 64);
- TextView text = new TextView(activity);
- text.setLayoutParams(layoutParams);
- // Center the text vertically
- text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
- // Set the text starting position
- text.setPadding(36, 0, 0, 0);
- text.setText(string);
- return text;
- }
- public boolean hasStableIds()
- {
- return false;
- }
- public boolean isChildSelectable(int groupPosition, int childPosition)
- {
- return true;
- }
- }
- }
需要注意的内容:
1:groupArray 和childArray的内容,分别定义父对象和子对象显示的内容
2:ExpandableAdapter继承了BaseExpandableListAdapter,并重载了其中的一些方法, 注意public TextView getGenericView(String string)的作用,主要用形成显示父对象和子对象视图的类
3:程序效果
这篇关于ExpandableListView的简单例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!