目前大家都在使用ExpandableListView完成一些特效,目前大多数程序在显示都没有问题,但是在处理数据的时候出现问题,本人使用自定义的显示模式及数据,单介绍这个空间的使用。

首先看主xml文件:

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

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="expandlistview content test" />
<ExpandableListView android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/uselistExpLV" android:drawSelectorOnTop = "false" />//ExpandableListView控件

<TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="No Data" />//ExpandableListView没有数据时显示

</LinearLayout>

//用于显示二级选项的xml,即child显示需要用的xml布局

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
android:id ="@+id/uselistChild"
android:text = "No Data"
android:textSize = "15sp"
android:paddingLeft = "45px"
android:paddingTop = "10px"
android:paddingRight = "30px"
android:paddingBottom = "10px"
/>

这里需要注意,我并没有使用布局文件,如果使用了布局文件,那么在程序中需要注意获取对象的时候,确认是否是布局对象,还是显示对象

//用于显示分组选项的xml,即group显示需要用的xml布局

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
android:id ="@+id/uselistGroup"
android:text = "No Data"
android:textSize = "25sp"
android:paddingLeft = "45px"
android:paddingTop = "10px"
android:paddingRight = "30px"
android:paddingBottom = "10px"
/>

最后是主程序java文件:

package com.eoeAndroid;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.SimpleExpandableListAdapter;
import android.widget.TextView;

public class UseListControl extends Activity {


private ExpandableListView expListView;

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.uselistmain);

expListView = (ExpandableListView)findViewById(R.id.uselistExpLV);
List<Map<String,String>> groups = new ArrayList<Map<String,String>>();

Map<String,String> group1 = new HashMap<String,String>();
group1.put("group", "music");
Map<String,String> group2 = new HashMap<String,String>();
group2.put("group", "lrc");

groups.add(group1);
groups.add(group2);

List<Map<String,String>> child1 = new ArrayList<Map<String,String>>();
Map<String,String> childdata1 = new HashMap<String,String>();
childdata1.put("child", "青花瓷");
Map<String,String> childdata2 = new HashMap<String,String>();
childdata2.put("child", "东风破");
child1.add(childdata1);
child1.add(childdata2);

List<Map<String,String>> child2 = new ArrayList<Map<String,String>>();
Map<String,String> childdata3 = new HashMap<String,String>();
childdata3.put("child", "青花瓷.lrc");
Map<String,String> childdata4 = new HashMap<String,String>();
childdata4.put("child", "东风破.lrc");
child2.add(childdata3);
child2.add(childdata4);

List<List<Map<String,String>>> childs = new ArrayList<List<Map<String,String>>>();
childs.add(child1);
childs.add(child2);

SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(UseListControl.this, groups, R.layout.uselistgroups,new String[]{"group"} , new int[]{R.id.uselistGroup}, childs,R.layout.uselistchilds, new String[]{"child"},new int[]{R.id.uselistChild} );

expListView.setAdapter(adapter);

expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub

Log.v("UseListControl", "onChildClick"+((TextView)parent.getChildAt(childPosition)).getText().toString());
Bundle bundle = new Bundle();
bundle.putString("useforitem",((TextView)v).getText().toString());//给bundle 写入数据

Intent mIntent = new Intent();
mIntent.putExtras(bundle);
UseListControl.this.setResult(RESULT_OK, mIntent);

UseListControl.this.finish();

return true;
}
});

}


}

((TextView)v).getText().toString());这句使用的时候需要注意,v的获取,需要确定这个是布局对象还是显示对象,本人xml并没有使用布局,所以获取的是textview对象,但是如果使用了布局,则会获取到布局文件,所以需要根据布局对象findviewbyid获取对应的元素。

这种方式则可以确定使用的根据自己定义格式,使用布局将这些元素find查询到。

其余解释同别的一样,不做详细分析

更多相关文章

  1. android数据存取的四种方式
  2. 使用GDB调试Android(安卓)Native Lib
  3. Android中LinearLayout布局的常用属性总结
  4. Android学习笔记(9)——ListView简介
  5. 浅析Android(安卓)的 MediaPlayer类
  6. Android从零开始搭建MVVM架构(4)——LiveData
  7. 解决 android 的R文件不能生成 R cannot be resolved to a varia
  8. Android之Actionbar顶部标签的使用
  9. Android工程导入jar文件步骤

随机推荐

  1. SQL服务器无法启动的解决方法
  2. SQL2008的sa账户被禁用其他账户无法连接
  3. MSSQLSERVER不同版本设置开启远程连接(sa
  4. SQL Agent服务无法启动的解决方法
  5. SQL Server 2008 R2登录失败的解决方法
  6. SQL SERVER 2012新增函数之逻辑函数IIF
  7. SQL SERVER 2012新增函数之字符串函数FOR
  8. SQL SERVER 2012新增函数之逻辑函数CHOOS
  9. SQL SERVER2012中新增函数之字符串函数CO
  10. SQL Server中利用正则表达式替换字符串的