ExpandableListView

android ExpandableListView简单应用及listview模拟ExpandableListView 首先我们还是来看一些案例,还是拿搜狐新闻客户端,因为我天天上下班没事爱看这个东东,上班又没时间看新闻,上下班路途之余浏览下新闻打发时间嘛.                            看这个效果挺棒吧,其实实现起来也不难,我简单说明下. 首先我们用到的控件是:ExpandableListView 布局文件: <RelativeLayout xmlns:android="ht 阅读详情
二级列表
public class MainActivity extends Activity {

    private ExpandableListView expandableListView;
    private String[] groups;
    private int[] groupImages;

    private String[][] childs;
    private int[][] childImages;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        expandableListView = (ExpandableListView) findViewById(R.id.expandable);
        initData();
        HgzBaseAdapter hgzBaseAdapter = new HgzBaseAdapter();
        expandableListView.setAdapter(hgzBaseAdapter);
        //设置默认展开列表
        for (int i = 0; i < hgzBaseAdapter.getGroupCount();i++) {
            expandableListView.expandGroup(i);
        }
    }

    private void initData() {
        groups = new String[] { "布加迪", "兰博基尼", "玛莎拉蒂" };
        groupImages = new int[] { R.drawable.a, R.drawable.f, R.drawable.m, };
        childs = new String[][] { { "布加迪1", "布加迪2", "布加迪3", "布加迪4" },
                { "兰博基尼1", "兰博基尼2", "兰博基尼3", "兰博基尼4" },
                { "玛莎拉蒂1", "玛莎拉蒂2", "玛莎拉蒂3", "玛莎拉蒂4" } };
        childImages = new int[][] {
                { R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e },
                { R.drawable.g, R.drawable.h, R.drawable.k, R.drawable.l },
                { R.drawable.n, R.drawable.o, R.drawable.p, R.drawable.q } };
    }

    private class HgzBaseAdapter extends BaseExpandableListAdapter {
        // 得到分组的数量
        @Override
        public int getGroupCount() {
            return groups.length;
        }

        // 得到groupPosition这一组的子视图数量
        @Override
        public int getChildrenCount(int groupPosition) {
            return childs[groupPosition].length;
        }

        // 获取groupPosition分组对象
        @Override
        public Object getGroup(int groupPosition) {
            return groups[groupPosition];
        }

        // 得到groupPosition分组中的childPosition位置的子视图对象
        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return childs[childPosition];
        }

        // 得到组id(groupPosition)
        @Override
        public long getGroupId(int groupPosition) {
            return groupPosition;
        }

        // 获取groupPosition分组的子child的id(childPosition)
        @Override
        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }

        // 是否有固定的id
        @Override
        public boolean hasStableIds() {
            return false;
        }

        // 重点!!!!
        // 获取分组view

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded,
                View convertView, ViewGroup parent) {
            View view = View.inflate(MainActivity.this,
                    R.layout.activity_expandable_group, null);
            ImageView group_image = (ImageView) view
                    .findViewById(R.id.group_image);
            TextView group_text = (TextView) view.findViewById(R.id.group_text);
            group_image.setImageResource(groupImages[groupPosition]);
            group_text.setText(groups[groupPosition]);
            return view;
        }

        // 重要!!!
        // 获取子view

        @Override
        public View getChildView(int groupPosition, int childPosition,
                boolean isLastChild, View convertView, ViewGroup parent) {
            View view = View.inflate(MainActivity.this,
                    R.layout.activity_expandable_child, null);
            ImageView child_image = (ImageView) view
                    .findViewById(R.id.child_image);
            TextView child_text = (TextView) view.findViewById(R.id.child_text);
            child_image
                    .setImageResource(childImages[groupPosition][childPosition]);
            child_text.setText(childs[groupPosition][childPosition]);
            return view;
        }
        // 子view是否可以被选中
        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return false;
        }
    }
}

//布局文件

Activity的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ExpandableListView
        android:id="@+id/expandable"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:groupIndicator="@null">
        
    </ExpandableListView>

</RelativeLayout>

GroupView的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/group_image"
        android:layout_width="80dp"
        android:layout_height="80dp" />

    <TextView
        android:id="@+id/group_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" />

</LinearLayout>

ChildView的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/child_image"
        android:layout_width="50dp"
        android:layout_height="50dp" />

    <TextView
        android:id="@+id/child_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" />

</LinearLayout>


掌握Android中ExpandableListView的全面应用 本文还有配套的精品资源,点击获取 简介:在Android开发中, ExpandableListView 控件用于展示层次结构数据,如菜单或目录。本文通过一个名为 ExpandableListDemo 的示例项目,详细介绍了如何有效地使用 ExpandableListView ,包括其基础、数据模型创建、适配器实现、数据绑定、点击事件... 阅读详情

相关推荐

在Android开发中掌握ExpandableListView

本文还有配套的精品资源,点击获取 简介:ExpandableListView是Android中用于展示层次化数据的控件,通过两层结构(父条目和子条目)实现展开和折叠功能,提供丰富的用户交互体验。本教程详细介绍如何使用ExpandableListView,包括创建数据模型、自定义适配器、事件监听、控制展开和折叠、性能优化、样式自定义以及状态保存与恢复等步骤,帮助开发者通过实践...

weixin_36197669的博客 1121

ExpandableListView控件的使用

ExpandableListView控件的简单使用 这里的布局没有进行美化,只是功能的简单实现。 先看一下效果图: [img] [img]http://dl.iteye.com/upload/attachment/0066/9273/000a4d31-5ab8-386e-b1d3-da8b4ce36b30.jpg[/img] [/img] 点击展开后效果: [img] [i...

阿弥陀佛 122

实现ExpandableListView的侧滑删除功能

ExpandableListView是Android开发中常用的组件,用于展示具有层级结构的数据。它比普通的ListView更进一步,能够显示两级以上的列表项,使得界面层次感更强,用户交互体验更佳。自定义子项布局是提升用户体验的重要手段。允许开发者定义子项的XML布局文件。这使得我们可以精确控制子项的外观和添加自定义视图元素。首先,创建一个名为的布局文件,用于定义组视图的外观。然后,创建另一个文件来定义子项的外观。这些文件应放在项目的res/layout目录下。

weixin_31659095的博客 822

方案选型:ExpandableListView 与 RecyclerTreeView,Android 树形列表该选谁?

做 Android 开发时,一旦遇到文件目录、部门组织、评论楼中楼这类层级数据,就难免纠结:**Android 树形列表**到底该用哪个控件?老牌选手 ExpandableListView 上手快、资料多;而基于 RecyclerView 实现的 RecyclerTreeView 则代表更现代、更灵活的玩法。本文不堆源码,只从性能、扩展性、动画、易用性四个维度做一次横向对比,帮你快速选对方案。

gitblog_00202的博客 723

狗都能看懂的MAML原理讲解和代码实现

meta-leaning指的是元学习,元学习是深度学习的一个分支,一个好的元模型(meta-learner)应该具备对新的、少量的数据做出快速而准确的学习。通俗的来讲, 对于人来说,给几张橘猫的图片让看一下,再给你几张没见过的英短猫图片,你一定能很快识别出来都是猫。但是对于神经网络来说,并非如此。如果让一个小汽车分类网络去识别不同的大货车,那效果肯定很差。而传统的CNN网络都是输入大量的数据,然后进行分类的学习。但是这样做的问题就是,神经网络的通用性太差了,根本达不到“智能”的标准。而人类的认知系统,可以通

个人学习笔记 6万+

Python入门之机器学习(非常详细)篇幅拉满,一般人看不完!

什么是机器学习?监督学习 supervised learning;非监督学习 unsupervised learning;半监督学习 semi-supervised learning;强化学习 reinforcement learning;监督学习是不断向计算机提供数据(特征),并告诉计算机对应的值(标签),最后通过大量的数据,让计算机自己学会判断和识别。例如Google Photo,你在APP中输入狗,这时就会弹出与狗相关的图片,这背后使用的算法就是监督学习。

xiaolinyui的博客 2万+

Android ExpandableListView可展开列表

ExpandableListView使用介绍,实现ExpandableListView适配器的编写、数据的刷新、分割线的设置等。

sea_bo的博客 6659

黑科技已上线|Lazada数据分析软件,一键式搞定你的店铺!

工欲利其事,必先利其器。在lazada跨境电商的整个流程中,适当的使用一些工具,不仅能大大的简化工作流程,而且可以提高实施效率。Mengla专为lazada电商卖家行业精细化分析lazada数据分析软件都有哪些强大功能! 一、两大优势: 1.海量数据: 数据覆盖面积大;数据分析维度逛;精确算法抓取海量数据;亿万数据秒级响应多种数据来源; 2.技术成熟: 深耕SaaS大数据挖掘;提供一站式数据分析服务;拥有领先的采集技术和运算模型架构; 二、Lazada数据分析软件的功能: 1.各国站点一键分析: 马来西亚

Menglakeji的博客 1144

Android ExpandableListView使用指南

Android ExpandableListView使用指南 项目介绍 Android的ExpandableListView是一个强大的UI组件,它允许开发者展示具有层级关系的数据。这个项目是基于harishsn/ExpandableListView,旨在提供一个简洁且易用的ExpandableListView实现示例。项目展示了如何构建一个具有可展开和折叠功能的列表,这在展示分类信息或组织数据时...

gitblog_00349的博客 1070

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 538

避免踩坑!杰理AC63蓝牙名修改常见问题及解决方案(含BLE后缀处理)

本文详细解析了杰理AC63蓝牙设备名称修改的全过程,包括基础操作、BLE后缀处理及高级调试技巧。针对蓝牙名修改中的常见问题,提供了实用的解决方案和代码示例,帮助开发者避免踩坑并实现高效定制。

q6r7s8t9的博客 410

Android 使用ExpandableListView时,需要注意哪些细节

若 ExpandableListView 处于 LinearLayout 中,可以使用 android:layout_weight 属性来分配剩余空间。如果 ExpandableListView 位于 RelativeLayout 中,需要使用相对定位属性来确定其位置。可以使用 android:scrollbars 属性来控制滚动条的显示方式,取值可以是 vertical、horizontal 或 none。

陈志宝‑天津|Android&Java 全栈开发工程师 1439

7 中望CAD二次开发-标注(一)(ZRX C++)

尺寸标注是CAD设计中最常用的功能之一,软件内置了很多标注功能,可以通过使用这些标注工具,对需要标注的长度、角度等一个个进行标注。但这显然效率很低,学习CAD二次开发,就是要把人从重复的劳动中解放出来,实现批量标注。本文介绍,如何通过二次开发进行标注。

cilvsuanna的博客 338

Android ExpandableListView嵌套ListView

ExpandableListView是一个垂直滚动显示两级列表项的视图,与ListView不同的是,它可以有两层:每一层都能够被独立的展开并显示其子项。这些子项来自于与该视图关联的BaseExpandableListAdapter。      有时候简单的ExpandableListView不能满足我们的需求,比如下面这样的需求:      这就需要在ExpandableListView里面

liuhanhan512的专栏 4019

(四)美赛画图篇:画图模板+画图工具

美赛画图篇:画图模板+画图工具(一)画图模板(二)画图工具 因为散点图、折线图等多与数据有关,且需相关软件生成,故此处多是通用模板。直接替换文字内容即可。 (一)画图模板 1、Visio圆圈图 适合于:指标体系(E题常用) 点击下载:1 C币 如果不想花费且时间充足,悄咪咪地说,在visio-模板搜索可以找到很多。(稍微会耗一点时间) 2、简单指标体系图PPT 适合于指标体系 点击下载:0 C币...

weixin_43689393的博客 1万+

YOLOv11训练:Roboflow免费数据集获取与格式转换超详细教程

公共数据集库:包含超过20,000个开源数据集数据标注工具:支持在线标注和团队协作数据预处理:自动增强、扩充和格式化版本控制:像管理代码一样管理数据集版本多格式导出:支持所有主流目标检测格式import cv2# 加载图像# 加载标注# 数据增强# 调整尺寸# 调整标注坐标# 转换为Tensor# 实现保持长宽比的resize逻辑pass# 坐标转换逻辑pass# 数据增强实现pass数据集选择优先选择Roboflow上标注质量高的官方数据集。

weixin_39818775的博客 2359

ExpandableListView 项目教程

ExpandableListView 项目教程 1. 项目的目录结构及介绍 ExpandableListView 项目的目录结构如下: ExpandableListView/ ├── app/ │ ├── build/ │ ├── libs/ │ ├── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── c...

gitblog_00849的博客 241

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ExpandableListView源码解析

ExpandableListView

AdrianAndroid的专栏 985

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ExpandableListView使用ScrollView嵌套ExpandableListView,列表显示不全

ExpandableListView在ScrollView显示不全的 解决办法有两种 第一种是在ScrollView的控件中添加 android:fillViewport="true" 这属性 但是添加这属性的不好的地方就是不能滑动了 第二种解决办法就是自定义view /** * Created by Xk * on 2019/5/31 * 860618071 */ pub...

xukangone的博客 760

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android开发-ExpandableListView控件

目录 1.ExpandableListView概述 1.1 定义 1.2 与ListView的区别 1.3 应用场景 2.常用属性 2.1 groupIndicator 2.2 childIndicator 2.3 childDivider 3.常用的方法 3.1 setAdapter(ExpandableListAdapter adapter) 3.2 setOnGroup...

云上道人的博客 1816

Kotlin ExpandableListView可扩展二级列表

var sc = SitCode(1, “1”, “一栋宿舍”);list.add(sc)sc = SitCode(11, “1C”, “宿舍2003”);list.add(sc)sc = SitCode(15, “1D”, “宿舍2004”);sc = SitCode(21, “2C”, “宿舍2007”);sc = SitCode(2, “1A”, “宿舍2001”);sc = SitCode(7, “1B”, “宿舍2002”);sc = SitCode(16, “2”, “二栋宿舍”);

2501_90254378的博客 823

Android ExpandableListView 详细用法全解析

除了使用系统提供的简单布局,我们还可以自定义分组和子项的视图,以实现更丰富的界面效果。以下是一个自定义视图的示例:自定义分组布局文件 group_item.xml<ImageView<TextView自定义子项布局文件 child_item.xml<ImageView<TextView修改适配器中的 getGroupView 和 getChildView 方法@Override@Override。

陈志宝‑天津|Android&Java 全栈开发工程师 1505

二级菜单——ExpandableListView以及用RecyclerView实现

前言 二级菜单这个功能,相信很多app都需要这个功能,而我最近的项目中也有这样的需求。正常情况下,快捷的实现方式是使用Android提供的二级菜单控件——ExpandableListView,并编写相应的adapter,继承自BaseExpandableListAdapter即可。而非正常情况下,就是自己去实现这个二级菜单控件功能,而实现的基础就是RecyclerView。 优缺点 Expa...

树懒的博客 1万+

Android学习之ExpandableListView

什么是ExpandableListView ExpandableListView是扩展的ListView,继承自ListView;ExpandableListView可以实现点击展开列表,再点击收缩回去的效果。 ExpandableListView的使用 首先需要在主布局文件中声明ExpandableListView; <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.and

wsb_2526的博客 2767

ExpandableListView详解

/* *  Android开发之ExpandableListView *  北京Android俱乐部群:167839253 * Created on: 2012-7-23 * Author: blueeagle *  Email:liujiaxiang@gmail.com */ 有时候,使用ListView并不能满足应用程序所需要的功能。有些应用程序需要多组ListView,这时候我

AppleEngineer 966
上一篇: Activity的简单的跳转回传
下一篇: WebView的简单使用,附加一点JS交互操作
SuperMonsterH
博客等级 码龄9年 11粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperMonsterH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值