前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于安卓开发实现可展开的列表组件

关于安卓开发实现可展开的列表组件

作者头像
听着music睡
发布于 2018-05-18 04:21:05
发布于 2018-05-18 04:21:05
1.1K00
代码可运行
举报
文章被收录于专栏:Android干货Android干货
运行总次数:0
代码可运行

三个布局文件 main.xml      childs.xml      groups.xml

一个java文件  List_lianxi.java

main.xml文件代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6     <ExpandableListView 
 7         android:id="@id/android:list"
 8         android:layout_width="fill_parent"
 9         android:layout_height="fill_parent"
10         android:drawSelectorOnTop="false"
11                 />
12     <TextView 
13         android:layout_width="fill_parent"
14         android:layout_height="fill_parent"
15         android:id="@id/android:empty"
16         android:text="No Data"/> 
17 
18 </LinearLayout>

注意android:id="@id/android:list"  id 固定  否则无法运行

groups.xml文件代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6     <TextView
 7         android:layout_width="fill_parent"
 8         android:layout_height="fill_parent"
 9         android:id="@+id/group"
10         android:textSize="25sp"
11         android:paddingLeft="35dp"
12         android:paddingRight="5dp"
13         android:paddingTop="10dp"
14         android:paddingBottom="10dp"
15         android:text="No Data"/>
16 
17 </LinearLayout>

childs.xml文件代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6     <TextView
 7         android:layout_width="fill_parent"
 8         android:layout_height="fill_parent"
 9         android:id="@+id/child"
10         android:textSize="15sp"
11         android:paddingLeft="25dp"
12         android:paddingTop="10dp"
13         android:paddingRight="5dp"
14         android:paddingBottom="10dp"
15         android:text="No Data" 
16         />
17     
18 
19 </LinearLayout>

List_lianxi.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 package lianxi;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7 
 8 import com.example.jichu_lianxi.R;
 9 
10 
11 import android.app.ExpandableListActivity;
12 import android.os.Bundle;
13 import android.view.View;
14 import android.widget.ExpandableListView;
15 import android.widget.SimpleExpandableListAdapter;
16 
17 public class List_lianxi extends ExpandableListActivity{            //继承ExpandableListActivity
18     @Override
19     public void onCreate(Bundle savedInstanceState) {
20         // TODO Auto-generated method stub
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.main);                               
23         
24         //创建一级条目容器
25         List<Map<String,String>>groups = new ArrayList<Map<String,String>>();
26         //创建两个一级条目标题
27         Map<String, String>group1 = new HashMap<String, String>();
28         group1.put("group", "音乐");
29         Map<String, String>group2 = new HashMap<String, String>();
30         group2.put("group", "歌词");
31         groups.add(group1);
32         groups.add(group2);
33         //创建一级条目下的二级条目
34         List<Map<String, String>> child_one = new  ArrayList<Map<String,String>>();
35         //在一级条目目录下创建两个对应的二级条目目录
36         Map<String, String> child_one_1 = new HashMap<String, String>();
37         child_one_1.put("child", "青花瓷");
38         Map<String, String> child_one_2 = new HashMap<String, String>();
39         child_one_2.put("child", "东风破");
40         child_one.add(child_one_1);
41         child_one.add(child_one_2);
42         
43         //第二个二级条目目录
44         List<Map<String, String>> child_two = new  ArrayList<Map<String,String>>();
45         Map<String, String> child_two_1 = new HashMap<String, String>();
46         child_two_1.put("child", "青花瓷.lrc");
47         Map<String, String> child_two_2 = new HashMap<String, String>();
48         child_two_2.put("child", "东风破.lrc");
49         child_two.add(child_two_1);
50         child_two.add(child_two_2);
51         
52         //将二级条目目录放在一个集合里供显示时使用
53         List<List<Map<String, String>>>childs = new ArrayList<List<Map<String,String>>>();
54         childs.add(child_one);
55         childs.add(child_two);
56         
57         /*
58          * 使用SimpleExpandableListAdapter显示ExpandableListView
59          * 参数1:上下文对象Context
60          * 参数2:一级条目目录集合
61          * 参数3:一级条目对应的布局文件
62          * 参数4:fromto,map中的key,指定要显示的对象
63          * 参数5:与参数4对应,指定要显示在groups中的id
64          * 参数6:二级条目目录集合
65          * 参数7:二级条目对应的布局文件
66          * 参数8:fromto.map中的key,指定要显示的对象
67          * 参数9:与参数8对应,指定要显示在childs中的id
68          */
69         SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(this, groups, R.layout.groups, new String[]{"group"}, new int[]{R.id.group}, childs, R.layout.childs, new String[]{"child"}, new int[]{R.id.child});
70         setListAdapter(adapter);
71 
72     }
73     //设置哪个二级目录被默认选中
74     @Override
75     public boolean setSelectedChild(int groupPosition, int childPosition,
76             boolean shouldExpandGroup) {
77         // TODO Auto-generated method stub
78         return super.setSelectedChild(groupPosition, childPosition, shouldExpandGroup);
79     }
80     //设置哪个一级目录被默认选中
81     @Override
82     public void setSelectedGroup(int groupPosition) {
83         // TODO Auto-generated method stub
84         super.setSelectedGroup(groupPosition);
85     }//当二级条目被点击时响应
86     @Override
87     public boolean onChildClick(ExpandableListView parent, View v,
88             int groupPosition, int childPosition, long id) {
89         // TODO Auto-generated method stub
90         return super.onChildClick(parent, v, groupPosition, childPosition, id);
91     }
92 }

运行效果:

参考代码源于:<<Android经典应用>>赵书兰 编著 p101---p105

其中有2个错误

1、main.xml中的 android:id="@+id/list" 应该为 android:id="@id/android:list"    否则运行出错

2、p102页 grouds.xml文件代码应该为groups.xml

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
win2d 画出好看的图形
本文告诉大家,win2d 不需要从零开始做,以前做出来的很多库其实只需要做很小修改就可以做出好看的效果,而且用在 UWP 上。本文修改原先 大神写的 GDI 图形到 win2d 上,而且可以运行起来。
林德熙
2018/09/19
7170
win2d 画出好看的图形
C# 实现 Word 加盖骑缝章效果
在OA的自动化处理系统中,通过审批的最终节点,可能会对WORD文件加盖电子章,比如定位带有指定文字的Range周围加盖电子章,骑缝章,甚至水印图片。比如如下效果图:
初九之潜龙勿用
2024/06/20
1160
C# 实现 Word 加盖骑缝章效果
ImageHelper.cs-支持高清缩略图
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace System { /// <summary> /// 图片处理类 /// </summary> public class
KenTalk
2018/09/11
9400
使用 C# Graphics 绘图来绘制一个足球
2022卡塔尔世界杯是足球爱好者的狂欢,这与我毫无关系,作为一个缺乏运动的人,还是不要去看人家玩命的运动了。虽然不看球,不过这波热度的持续冲击,还是让我在朋友圈刷到了结局 ———— 球王梅西如愿以偿捧得金杯,后起之秀姆巴佩加冕金靴。但作为程序员,为了增加一些参与感我就拿 C# 画个足球图案吧。
桑榆肖物
2023/01/03
6590
使用 C# Graphics 绘图来绘制一个足球
C#生成缩略图
/**/ /// <summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理路径)</param> /// <param name="width">缩略图宽度</param> /// <param name="height">缩略图高度</param> /// <param name="mode">生成缩略图的方式</param> public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode,string type) { System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
jack.yang
2025/04/05
510
C# 图片RGB处理判断
方法需要传入新的图片对象(Bitmap),原图的标准RGB平均值,新图的RGB颜色,新图和原图的RGB相差偏移量。 返回新图的RGB平均值是否在原图的RGB平均值偏移量之内。
Echo_Wish
2023/11/30
2450
模拟退火算法实例(c++ 与 c# 实现)
此片文章主要参考CSDN博主里头的一篇文章, 将自己的理解写下来,以方便后期的查阅。
用户2434869
2018/09/12
2.3K0
C# 生成指定图片的缩略图
场景1:培训系统中,在上传课件培训视频素材的功能,我们会上传课程封面图片,将来会在课程详情内容中在指定的位置输出。
初九之潜龙勿用
2024/06/20
1840
如何识别出轮廓准确的长和宽
对于这样 的轮廓分析,标明出来的1和2明显是错误的。但是除了minAreaRect之外,已经没有更解近一步的方法。也尝试首先对轮廓进行凸包处理,再查找外接矩形,效果同样不好。
OpenCV学堂
2018/09/29
2.1K0
如何识别出轮廓准确的长和宽
可视化拖拽组件库一些技术要点原理分析(二)
本文是对《可视化拖拽组件库一些技术要点原理分析》的补充。上一篇文章主要讲解了以下几个功能点:
谭光志
2021/01/20
1.4K0
可视化拖拽组件库一些技术要点原理分析(二)
C#图片处理示例(裁剪,缩放,清晰度,水印)
原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/
跟着阿笨一起玩NET
2018/09/19
2.4K0
C#图片处理示例(裁剪,缩放,清晰度,水印)
C# 给图片添加文字水印
在某些应用项目(如电子档案信息管理)中,查看电子图片信息是经常使用到的功能,此时我们就需要给显示在浏览器中的图片添加文字水印版权或提示信息。增加水印主要起到如下作用:
初九之潜龙勿用
2024/06/20
1420
给图片添加文字水印
水印图片透明度设置和旋转(下面这段代码和上面一段代码都位于Watermark类中,因为代码量较大,所以分开来展示):
雪飞鸿
2018/09/05
3.2K0
给图片添加文字水印
win2d CanvasCommandList 使用方法 直接显示相对移动复用命令与 CanvasRenderTarget 的区别特效
在 win2d 可以通过 CanvasCommandList 定义很多命令,这些命令不是直接渲染到 Canvas 上,而是作为一个缓存。可以将 CanvasCommandList 作为输入,输入到其他的特效或参与其他的渲染。 特别在用 Win2d 写一个渲染框架的时候,通过 CanvasCommandList 可以实现内部元素容器的偏移和统一的效果
林德熙
2019/03/13
5110
win2d CanvasCommandList 使用方法
            直接显示相对移动复用命令与 CanvasRenderTarget 的区别特效
(三十四)c#Winform自定义控件-Tab页
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
1.6K0
(三十四)c#Winform自定义控件-Tab页
一个自定义的C#图片处理类,用于生成缩略图信息
这个C#类专门用于图片缩略图处理,除了可以将图片缩小成指定大小的缩略图外,还可以用于给图片打上图片水印,
用户7108768
2021/11/02
5550
C# OpenCV | 手把手教你用传统方法实现骰子识别
这个案例是2018年初我给别人做的一个小项目,当时还没有现在这么多可以即拿即用的目标检测网络(比如SSD/Yolo等),所以当时是用传统的图像处理方法实现的。后来我的TensorFlow视频教程中也拿它来做目标检测案例讲解过:
Color Space
2022/02/08
1.2K0
C# OpenCV | 手把手教你用传统方法实现骰子识别
C# 图片处理生成缩略图
缩略图通常是将图片内容进行一定的缩小展现,或裁剪展现,主要有两个目的,一是提供一定的预览功能,二是节省屏幕展示空间、节省流量。 在网站中我们通常运用在商品的列表,比如商城、图书、新闻等等列表的图片。在C#中我们如何生成缩略图呢,也就是缩小图片,下面我们来看一看如何缩小图片。
SpringSun
2022/05/26
9170
代码挑战画 魔法圣诞树
2022年圣诞节到来啦,很高兴这次我们又能一起度过~ 本文会基于C# GDI+技术 实现魔法圣诞树效果!源码和素材在文末全部都有!
天罡gg
2022/12/25
1.3K0
代码挑战画 魔法圣诞树
OpenCV 应用边缘检测与霍夫线变换实现旋转角度检测
使用opencv的图片旋转功能,把它旋转一个角度,旋转方法参考: http://blog.csdn.net/chaipp0607/article/details/63263347
chaibubble
2022/05/07
9900
OpenCV 应用边缘检测与霍夫线变换实现旋转角度检测
推荐阅读
相关推荐
win2d 画出好看的图形
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验