ExpandableListView:List中的每一项可以展开收缩. 一种伸缩式的ListView.

android:cacheColorHint="#00000000"

这个设置可以去除拖动view时背景变成黑色的效果
android:listSelector="#00000000"

可以去除选中时的黄色底色

使用SimpleExpandableListAdapter显示ExpandableListView
public SimpleExpandableListAdapter (Context context, List<? extends Map<String, ?>> groupData, int groupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData, int childLayout, String[] childFrom, int[] childTo)
* 参数1.上下文对象Context
* 参数2.一级条目目录集合
* 参数3.一级条目对应的布局文件
* 参数4.fromto,就是map中的key,指定要显示的对象
* 参数5.与参数4对应,指定要显示在groups中的id
* 参数6.二级条目目录集合
* 参数7.二级条目对应的布局文件
* 参数8.fromto,就是map中的key,指定要显示的对象
* 参数9.与参数8对应,指定要显示在childs中的id

例子:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" ><ExpandableListView     android:id="@+id/list"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="#ffffff"    android:cacheColorHint="#00000000"    android:listSelector="#00000000"     >    </ExpandableListView></LinearLayout>

package com.light.android.study;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);final ExpandableListAdapter adapter = new BaseExpandableListAdapter() {//设置组视图的图片private int[] logos = new int[] { R.drawable.wei, R.drawable.shu,R.drawable.wu};//设置组视图的显示文字private String[] generalsTypes = new String[] { "魏", "蜀", "吴" };//子视图显示文字private String[][] generals = new String[][] {{ "夏侯惇", "甄姬", "许褚", "郭嘉", "司马懿", "杨修" },{ "马超", "张飞", "刘备", "诸葛亮", "黄月英", "赵云" },{ "吕蒙", "陆逊", "孙权", "周瑜", "孙尚香" }};//子视图图片public int[][] generallogos = new int[][] {{ R.drawable.xiahoudun, R.drawable.zhenji,R.drawable.xuchu, R.drawable.guojia,R.drawable.simayi, R.drawable.yangxiu },{ R.drawable.machao, R.drawable.zhangfei,R.drawable.liubei, R.drawable.zhugeliang,R.drawable.huangyueying, R.drawable.zhaoyun },{ R.drawable.lvmeng, R.drawable.luxun, R.drawable.sunquan,R.drawable.zhouyu, R.drawable.sunshangxiang } };//自己定义一个获得文字信息的方法TextView getTextView() {AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 64);TextView textView = new TextView(MainActivity.this);textView.setLayoutParams(lp);textView.setGravity(Gravity.CENTER_VERTICAL);textView.setPadding(36, 0, 0, 0);textView.setTextSize(20);textView.setTextColor(Color.BLACK);return textView;}//重写ExpandableListAdapter中的各个方法@Overridepublic int getGroupCount() {return generalsTypes.length;}@Overridepublic Object getGroup(int groupPosition) {return generalsTypes[groupPosition];}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic int getChildrenCount(int groupPosition) {return generals[groupPosition].length;}@Overridepublic Object getChild(int groupPosition, int childPosition) {return generals[groupPosition][childPosition];}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic boolean hasStableIds() {return true;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {LinearLayout ll = new LinearLayout(MainActivity.this);ll.setOrientation(0);ImageView logo = new ImageView(MainActivity.this);logo.setImageResource(logos[groupPosition]);logo.setPadding(50, 0, 0, 0);ll.addView(logo);TextView textView = getTextView();textView.setTextColor(Color.BLACK);textView.setText(getGroup(groupPosition).toString());ll.addView(textView);return ll;}@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {LinearLayout ll = new LinearLayout(MainActivity.this);ll.setOrientation(0);ImageView generallogo = new ImageView(MainActivity.this);generallogo.setImageResource(generallogos[groupPosition][childPosition]);ll.addView(generallogo);TextView textView = getTextView();textView.setText(getChild(groupPosition, childPosition).toString());ll.addView(textView);return ll;}@Overridepublic boolean isChildSelectable(int groupPosition,int childPosition) {return true;}};ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.list);expandableListView.setAdapter(adapter);//设置item点击的监听器expandableListView.setOnChildClickListener(new OnChildClickListener() {@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {Toast.makeText(MainActivity.this,"你点击了" + adapter.getChild(groupPosition, childPosition),Toast.LENGTH_SHORT).show();return false;}});}}

效果:










更多相关文章

  1. Android中的Bmp图形格式(ALPHA_8,ARGB_4444,ARGB_8888,RGB_565)
  2. 【Android自学笔记之一】个性TextView自己实现
  3. android修改MTP及MTP(PC显示名称)、PTP盘符名、蓝牙名称
  4. Android(安卓)之修改主题theme(系统自带样式总结)
  5. Android动态设置edittext的hint属性显示的提示文字大小
  6. Android(安卓)Jetpack应指南学习笔记8——Navigation(二)使用saf
  7. Android多媒体扫描过程(Android(安卓)Media Scanner Prosess)
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. Python技巧匿名函数、回调函数和高阶函数

随机推荐

  1. 招聘正在进行时,315晚会使用的高科技产品,
  2. Activity源码之Android(安卓)6.0权限相关
  3. Andriod 从源码的角度详解View,ViewGroup
  4. Eclipse与Android源码中ProGuard工具的使
  5. Anroid-vlc开源播放器代码编译及简单调用
  6. Android应用程序窗口(Activity)的窗口对象(W
  7. 微信 JSSDK 在 Android(安卓)和 iOS 的一
  8. Android(安卓)intent 属性详解(二)
  9. 为Android的界面设计增加跳跃效果
  10. 一起Talk Android吧(第一百四十七回:Androi