API中类继承关系:

ExpandableListView

extends ListView

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView<T extends android.widget.Adapter>
         ↳ android.widget.AbsListView
           ↳ android.widget.ListView
             ↳ android.widget.ExpandableListView

样例:

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/home_bg"
    >
    
    <include layout="@layout/top_bar" />
<View   
    android:layout_width="fill_parent"
    android:layout_height="1dip"
    android:background="#FF789977"
    />
   
   <ExpandableListView android:id="@+id/expandablelist"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:cacheColorHint="#00000000"
      android:divider="@drawable/dotted_line"
      android:layout_weight="1"
      android:childIndicator="@drawable/pic"
      />

</LinearLayout>

类:

public class mActivity extends Activity {

private ListView list ;
    private ExpandableListView  expandlist;
    
    private  List<Map<String,Object> > items;
    private String names[] = {"Rolling in the deep","Apologize","仙剑问情","依然爱你","涛声依旧","Wannable","为爱痴狂","洋葱"};
    private String artists[]= {"Adele","Timbaland ","萧人凤","王力宏","李行亮","SpiceGirls","金志文","平安"};
    private String  times[] = {"03:49","2:00","4:13","4:06","5:57","3:20","2:36","2:36"};
    
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main3);
        expandlist = (ExpandableListView)findViewById(R.id.expandablelist);
        
        
       /* prepareData();
         list = (ListView)findViewById(R.id.list);
         
         SimpleAdapter  adapter = new SimpleAdapter(this,items,R.layout.item,
                 new String[]{"name","artist","time"}, new int[]{ R.id.musicName,R.id.artist,R.id.time});
         
         list.setAdapter(adapter);*/
        
        expandlist.setAdapter(adapter);
        //设置item点击的监听器
        expandlist.setOnChildClickListener(new OnChildClickListener() {

@Override
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {

Toast.makeText(
                        mActivity.this,
                        "我点击了" + adapter.getChild(groupPosition, childPosition),
                        Toast.LENGTH_SHORT).show();

return false;
            }
        });
         
    }
    
    
    ExpandableListAdapter adapter = new BaseExpandableListAdapter(){
        
         //设置组视图的图片
        int[] logos = new int[] { R.drawable.liuhuan, R.drawable.jikejunyi,R.drawable.pic};
        //设置组视图的显示文字
        private String[] generalsTypes = new String[] { "刘欢", "吉克隽逸", "蔡依林" };
        
        //子视图显示文字
        private String[][] generals = new String[][] {
                { "凤凰于飞", "弯弯的月亮", "千万次的问",   "从头再来" },
                { "彩色的黑", "Halo",   "不要怕" },
                { "看我72变", "倒带", "舞娘"  }

};
        
        private String times[][] ={ {"2:36","4:06","3:25","2:56"},{"2:36","4:06","3:25"},{"2:36","4:06","3:25"}};
        private String counts[] = {"58首","46首","70首"};
        
      //子视图图片
        public int[][] generallogos = new int[][] {
                { R.drawable.kafei, R.drawable.kafei,
                        R.drawable.kafei, R.drawable.kafei
                  },
                  
                 { R.drawable.kafei, R.drawable.kafei,
                             R.drawable.kafei}  ,
                             
                   { R.drawable.kafei, R.drawable.kafei,
                             R.drawable.kafei
                    }  
            };
        
        
        
      //自定义textview,用于显示文字信息
        TextView getTextView() {
            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT, 64);
            TextView textView = new TextView(
                    mActivity.this);
            textView.setLayoutParams(lp);
            textView.setGravity(Gravity.CENTER_VERTICAL);
            textView.setPadding(66, 0, 0, 0);
            textView.setTextSize(20);
            textView.setTextColor(Color.BLACK);
            return textView;
        }
        
        
        
        @Override
        public Object getChild(int groupPosition, int childPosition) {
            
            return generals[groupPosition][childPosition];
        }

@Override
        public long getChildId(int groupPosition, int childPosition) {
            
            return childPosition;
        }

@Override
        public View getChildView(int groupPosition, int childPosition,
                boolean isLastChild, View convertView, ViewGroup parent) {
            
            
             LinearLayout ll = new LinearLayout( mActivity.this);
             ll.setOrientation(0);
             ImageView generallogo = new ImageView( mActivity.this);
             
             generallogo.setImageResource(generallogos[groupPosition][childPosition]);
             
           //  ll.addView(generallogo);
             
             TextView textView = getTextView();
             
             textView.setText(getChild(groupPosition, childPosition).toString());
             
             TextView timecount = getTextView();
             AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                     ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
             timecount.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT) ;
             timecount.setLayoutParams(lp);
             timecount.setText(times[groupPosition][childPosition]);
             
             
             ll.addView(textView);
             ll.addView(timecount);
             return ll;
            
            
        }

@Override
        public int getChildrenCount(int groupPosition) {
            
            return  generals[groupPosition].length;
        }

@Override
        public Object getGroup(int groupPosition) {
        
            return generalsTypes[groupPosition];
        }

@Override
        public int getGroupCount() {
            
            return generalsTypes.length;
        }

@Override
        public long getGroupId(int groupPosition) {
            
            return groupPosition;
        }

@Override
        public View getGroupView(int groupPosition, boolean isExpanded,
                View convertView, ViewGroup parent) {
            
             LinearLayout ll = new LinearLayout( mActivity.this);
             ll.setOrientation(0);
             // ImageView logo = new ImageView(mActivity.this);
            // logo.setImageResource(logos[groupPosition]);
            // logo.setMaxHeight(20);
            // logo.setMaxWidth(20);
            // logo.setPadding(50, 0, 0, 0);
            // ll.addView(logo);
             
             TextView textView = getTextView();
             textView.setTextColor(Color.BLACK);
             textView.setText(getGroup(groupPosition).toString());
             
             TextView textViewcount = getTextView();
             textViewcount.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
             textViewcount.setPadding(0, 0, 3, 0);
           //  textViewcount.
             textViewcount.setText(counts[groupPosition]);
            
             AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                     ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
             
             textViewcount.setLayoutParams(lp);
             
             ll.addView(textView);
             ll.addView(textViewcount);

return ll;
        
        }

@Override
        public boolean hasStableIds() {
        
            return true;
        }

@Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            
            return true;
        }

};

}

效果图:

Android ExpandableListView 使用实例相关推荐

  1. 技术实践 | Android Flutter 多实例实践

    导读:Flutter CLI 工具支持将 Flutter Module 打包成 Android AAR 包以供外部依赖使用,即 Flutter AAR.在一个没有使用 Flutter 技术栈的 And ...

  2. Android JNI简单实例(android 调用C/C++代码)

    转载自 xiechengfa 最终编辑 xiechengfa Android JNI简单实例关键字: android.jni Android的jni实例 android 的应用程序(Dalvik VM ...

  3. OpenCV android sdk配置OpenCV android NDK开发实例

    OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...

  4. android 滑动拦截,Android 滑动拦截实例代码解析

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package demo.hq.com.fby; import android.content.Context; import android.u ...

  5. Android串口通信实例分析【附源码】

    Android 串口通信实例分析,用的时开源的android-serialport-api 这个是用android ndk实现的串口通信,我把他做了一个简化,适合于一般的程序的串口通信移植,欢迎拍砖- ...

  6. android远程linux命令,测试可用的Android远程语音识别实例

    测试可用的Android远程语音识别实例: 代码下载在: 相关文件下载在Linux公社的1号FTP服务器里,下载地址: 用户名:www.linuxidc.com 密码:www.muu.cc 在 201 ...

  7. Android Hello World 实例【TODO】

    Table of Contents Android Hello World 实例 创建 Android 应用 Android应用程序剖析 主要活动文件 Manifest文件 Strings 文件 R ...

  8. android expandablelistview横向,Android ExpandableListView使用小结(二)

    在上一篇Android ExpandableListView使用小结(一)的介绍中,我们学习了 ExpandableListView 的使用方法,学习了自定义适配器,为列表选项设置监听事件.想必大家都 ...

  9. Android ExpandableListView示例教程

    Welcome to Android ExpandableListView Example Tutorial. In this tutorial we'll implement an Expandab ...

最新文章

  1. Drupal7 将到2021年11月结束支持,请注意升级
  2. Tensorflow MNIST浅层神经网络的解释和答复
  3. .NET MVC对接POLYV——HTML5播放器播放加密视频
  4. 《系统集成项目管理工程师》必背100个知识点-62采购管理
  5. zcmu-1181(大数相加)
  6. 构成子网与构成超网的分析
  7. GDB动态库搜索路径
  8. spring里restTemplate向目的URL发送post请求
  9. [Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想
  10. 求 逆矩阵 公式推导
  11. 加载行为:未加载用户已选择禁用宏
  12. 2019下半年软件设计师下午题
  13. Android手机便携式wifi的使用及无线数据传输(主要针对XP系统)
  14. Echart图实现tooltips循环轮播(方法)
  15. JUC -- 辅助类
  16. 小学计算机课教师教学笔记,小学信息技术课老师教育教学随笔
  17. 可口可乐启示录(2):如何不带脏字的“怼”竞争对手?【姜太公公】
  18. 信息系统项目管理师必背核心考点(四十)干系人管理
  19. Spring的Tomcat服务关闭后,Quartz进程无法正常关闭,出现内存泄露
  20. 黑帽SEO的常见操作手法解析

热门文章

  1. 程序员去外包公司待遇怎么样?外包薪资高吗?
  2. Linux系统如何安装Python?新手教程
  3. PLC与Unity通讯☀️ 二、Unity串口通讯
  4. 我用Excel制作了一枚“电子印章”,太牛逼了!
  5. 为何国外的人都爱用电子邮箱?注册电子邮箱有哪些好处呢?
  6. 被WORD惹怒的一天:word写英文单词,单词每个字母间距过大。
  7. 如何正确关闭MongoDB
  8. 农产品电商app开发的主要价值与功能分析
  9. 贴片绕线电感和贴片电感的区别
  10. 记一款游戏--《程序员升职记》