目前大家都在使用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查询到。
其余解释同别的一样,不做详细分析
----------------------------
原文链接:https://blog.51cto.com/hongbin0720/721565
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 flybird 在 2020-04-18 19:09:56 重新编辑]
网站系统异常
系统异常信息
Request URL:
http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=3147
java.lang.NullPointerException
如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员 。