>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20060 个阅读者 刷新本主题
 * 贴子主题:  Android ExpandableListView 使用范例 回复文章 点赞(0)  收藏  
作者:javathinker    发表时间:2020-03-31 18:02:03     消息  查看  搜索  好友  复制  引用

目前大家都在使用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

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员