码迷,mamicode.com
首页 > 移动开发 > 详细

android控件开发之ExpandableListActivity

时间:2014-12-11 10:27:10      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:android控件开发   可扩展列表   expandablelistview   

android控件开发之ExpandableListActivity

本博文主要讲述的是android控件开发中的ExpandableListActivity(可扩展List)控件的简单用法。

java代码:

package com.example.expandablelistactivity;


import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.app.ListActivity;
import android.view.Menu;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.SimpleExpandableListAdapter;
import android.widget.ExpandableListView.OnChildClickListener;




/*创建一个ExpandableListActivity需要如下步骤:
 * 1、首先需要设置ExpandableListView的布局样式
 * 2、创建一个一级条目的布局样式文件
 * 3、创建一个二级条目的布局样式文件
 * 4、设置一级条目的数据
 * 5、设置二级条目的数据
 * 6、使用SimpleExpandableListAdapter为ExpandableListActivity提供数据
 * 7、设置监听器
 * */


public class MainActivity extends ListActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//创建一级条目的对象
ArrayList<HashMap<String, String>> groups = new ArrayList<HashMap<String,String>>();
HashMap<String, String> group1 = new HashMap<String, String>();
HashMap<String, String> group2 = new HashMap<String, String>();

//给一级条目设置数据
group1.put("group", "group1");
group2.put("group", "group2");

//将数据添加到一级条目的对象中
groups.add(group1);
groups.add(group2);


//创建二级条目的child1对象。用来给第一个一级条目提供数据
ArrayList<HashMap<String, String>> child1 = new ArrayList<HashMap<String,String>>();
HashMap<String, String> child1data1 = new HashMap<String, String>();
HashMap<String, String> child1data2 = new HashMap<String, String>();
HashMap<String, String> child1data3 = new HashMap<String, String>();

child1data1.put("child", "child1data1");
child1data2.put("child", "child1data2");
child1data3.put("child", "child1data3");

child1.add(child1data1);
child1.add(child1data2);
child1.add(child1data3);


//创建二级条目的child2对象。用来给第二个一级条目提供数据
ArrayList<HashMap<String, String>> child2 = new ArrayList<HashMap<String,String>>();
HashMap<String, String> child2data1 = new HashMap<String, String>();
child2data1.put("child", "child2data1");
child2.add(child2data1);


//创建二级条目的对象。
ArrayList<ArrayList<HashMap<String, String>>> childs = new ArrayList<ArrayList<HashMap<String,String>>>();

childs.add(child1);
childs.add(child2);


SimpleExpandableListAdapter ela = new SimpleExpandableListAdapter(this, groups,
R.layout.group, new String[]{"group"}, new int[]{R.id.groupText}, 
childs, R.layout.child, new String[]{"child"}, new int[]{R.id.childText});

//给ExpandableListView设置SimpleExpandableListAdapter适配器
ExpandableListView expandableListView = (ExpandableListView)findViewById(android.R.id.list);
expandableListView.setAdapter(ela);


//绑定ExpandableListView child的监听器
expandableListView.setOnChildClickListener(new expandableChildLisenter());

}

//实现二级菜单监听器
class expandableChildLisenter implements OnChildClickListener{
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
System.out.println("group = " + groupPosition);
System.out.println("child = " + childPosition);
System.out.println("id = " + id);

return false;
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}

主布局文件main.xml代码:此布局文件主要是定义一个ExpandableListView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >


    <TextView
        android:id="@+id/myText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <!--设置ExpandableListView主界面的布局文件  -->
    <ExpandableListView
        android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dp" 
        android:layout_below="@id/myText"
        ></ExpandableListView>


</RelativeLayout>



一级列表布局文件group.xml代码:此布局文件主要设置的是一级列表的样式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <!--主要是设置一级条目的样式  -->
    <TextView 
        android:id="@+id/groupText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="30dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:textSize="20sp"/>


</LinearLayout>

效果如下:
bubuko.com,布布扣


二级列表布局文件child.xml代码:此布局文件主要是用来设置二级列表的样式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <!--设置二级条目的样式  -->
    <TextView 
        android:id="@+id/childText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="35dp"
        android:textSize="15sp"/>

</LinearLayout>

效果如下:
bubuko.com,布布扣

当点击二级列表中的某项时,会在LogCat中输出当前点击的菜单的一级列表POS,二级列表POS,以及二级列表的ID,如下:
bubuko.com,布布扣




android控件开发之ExpandableListActivity

标签:android控件开发   可扩展列表   expandablelistview   

原文地址:http://blog.csdn.net/ajhsdj/article/details/41862807

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!