Android ExpandableListView - 寻找教程[关闭]

2023-12-14

我正在尝试编写一个 Android 界面,该界面在一侧使用可扩展列表,在另一侧使用片段,以便我可以通过单击可扩展列表的子项来加载不同的资源。但不幸的是我在任何地方都找不到关于这个列表的任何好的教程。是的,我查看了 API 演示,并使用 BaseExpandableListAdapter 制作了一个普通列表,但是,如果没有好的教程,要很好地理解这些列表,这有点困难,您有什么好的教程或我可以检查的信息吗?


创建项目列表

List<ParentItem> itemList = new ArrayList<ParentItem>();

ParentItem parent1 = new ParentItem();
parent1.getChildItemList().add(new ChildItem());
parent1.getChildItemList().add(new ChildItem());
parent1.getChildItemList().add(new ChildItem());

ParentItem parent2 = new ParentItem();
parent2.getChildItemList().add(new ChildItem());
parent2.getChildItemList().add(new ChildItem());
parent2.getChildItemList().add(new ChildItem());

itemList.add(parent1);
itemList.add(parent2);

ExpandableListViewAdapter adapter = new ExpandableListViewAdapter(context, itemList); 

数据对象

public class ParentItem {

        private List<ChildItem> childItemList;

        public ParentItem() {
                childItemList = new ArrayList<ChildItem>();
        }

        public List<ChildItem> getChildItemList() {
                return childItemList;
        }
}

public class ChildItem {
        // filll with your data
}

Adapter

public class ExpandableListViewAdapter extends BaseExpandableListAdapter {

        private static final class ViewHolder {
                TextView textLabel;
        }

        private final List<ParentItem> itemList;
        private final LayoutInflater inflater;

        public ExpandableListViewAdapter(Context context, List<ParentItem> itemList) {
                this.inflater = LayoutInflater.from(context);
                this.itemList = itemList;
        }

        @Override
        public ChildItem getChild(int groupPosition, int childPosition) {

                return itemList.get(groupPosition).getChildItemList().get(childPosition);
        }

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

        @Override
        public int getChildrenCount(int groupPosition) {
                return itemList.get(groupPosition).getChildItemList().size();
        }

        @Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
                                 final ViewGroup parent) {
                View resultView = convertView;
                ViewHolder holder;


                if (resultView == null) {

                        resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id
                        holder = new ViewHolder();
                        holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id
                        resultView.setTag(holder);
                } else {
                        holder = (ViewHolder) resultView.getTag();
                }

                final ChildItem item = getChild(groupPosition, childPosition);

                holder.textLabel.setText(item.toString());

                return resultView;
        }

        @Override
        public ParentItem getGroup(int groupPosition) {
                return itemList.get(groupPosition);
        }

        @Override
        public int getGroupCount() {
                return itemList.size();
        }

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

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded, View theConvertView, ViewGroup parent) {
                View resultView = theConvertView;
                ViewHolder holder;

                if (resultView == null) {
                        resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id
                        holder = new ViewHolder();
                        holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id
                        resultView.setTag(holder);
                } else {
                        holder = (ViewHolder) resultView.getTag();
                }

                final ParentItem item = getGroup(groupPosition);

                holder.textLabel.setText(item.toString());

                return resultView;
        }

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

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

}

给你

==============================
+Parent 1
==============================
-child 1.1
==============================
-child 1.2
==============================
-child 1.3
==============================
+Parent 2
==============================
-child 2.1
==============================
-child 2.2
==============================
-child 2.3
==============================
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android ExpandableListView - 寻找教程[关闭] 的相关文章

  • Android 4.4.2 - java.lang.RuntimeException:执行未恢复的活动停止

    我在 4 4 2 设备上遇到此异常 在 Android 4 3 或更低版本的设备上无法重现 设置是我有一个家庭活动 支持的子类ActionBarActivity 家庭活动检查布尔标志 如果为真 则启动启动画面活动 是的 理想情况下启动画面出
  • 单击弹出菜单时为什么导航栏出现在全屏应用程序中

    我有一个全屏应用程序 MainActivity java public class MainActivity extends AppCompatActivity TargetApi Build VERSION CODES KITKAT pr
  • Android Studio 3.0.0 不允许 DOCTYPE

    升级到Android Studio 3 0 0 同步并更新gradle插件 出现以下错误 Error DOCTYPE not allowed if function http apache org xml features disallow
  • 毕加索动画加载图像

    我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • Renderscript 示例构建错误

    所以我想尝试使用 RenderScript 的示例 并在 Eclipse 中导入了 HelloWorld 但它给了我这样的错误 2011 10 25 13 10 48 HelloWorld home mileoresko workspace
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • Android:应用内计费V3超时返回哪个响应码?

    出现网络超时情况时 Google Play 应用内结算服务 ice er V3 将返回哪些响应状态代码 它的所有功能都是统一的吗 我将在这里描述我的发现 我通过拔掉主机插头 在安装了全功能 GP GP Store V3 10 10 GP S
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • 以编程方式将 TextView 添加到主屏幕小部件

    我想以编程方式将文本视图控件添加到我的主屏幕小部件 在下面的示例中 我使用 TextView 填充 Linearlayout 但是这里应该如何使用 RemoteView 它只接受 xml 资源布局作为参数 public class MyWi
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • Android Studio IDE 上的“文本/设计”选项卡缺少新的 Android 项目

    如何在创建新项目期间自动创建的 Activity main xml 文件的 src main res layout 文件夹中启用文本 设计选项卡 如果我右键单击并在所述文件夹上创建 xml 文件 则设计 文本选项卡存在 有什么建议吗 谢谢
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 直接使用从密钥库加载的 SecretKey 时,密钥用户未经过身份验证

    我正在尝试使用 Cipher 和在 KeyStore 中加载的 SecretKey 来加密数据 但总是收到此错误 导致 android security KeyStoreException 关键用户未经过身份验证 我尝试自己创建 Secre

随机推荐

  • 如何从独立的纯 JavaScript 函数调用 Angular 4 方法?

    我希望能够将一些数据 传播事件从页面上的插件传递到我的 Angular 4 应用程序 更具体地说 在我的例子中 数据 事件是在页面上 Angular 应用程序旁边的 Silverlight 插件应用程序内生成的 我心中有以下解决方案 创建一
  • C 中的“压缩”结构是什么?

    我正在查看一些为 Microchip C30 编译器编写的 C 代码 经常看到如下定义的结构 typedef struct attribute packed IP ADDR MyIPAddr IP address IP ADDR MyMas
  • 为什么 Flex 中的 fieldset 在浏览器之间的行为不同

    我写了这个示例代码 div style display flex width 100 fieldset style width 100 p Lorem ipsum dolor sit amet consectetur adipiscing
  • 将 PHP 数组转换为 XML?

    假设我有一个像这样的数组 将整个数组转换为 XML 的最简单方法是什么 现场相关数据的一些工作示例 https stackoverflow com a 14143759 367456 原答案如下 看看这些预定义的实现 http snippl
  • MongoDB“默认存储引擎‘wiredTiger’在此版本的 mongod 中不可用”+“..no /data/db 文件夹..”

    首次安装 MongoDb 并运行后mongod命令 在里面C Program Files MongoDB Server 3 2 bin gt 目录 我收到错误 默认存储引擎 wiredTiger 不适用于此版本的 mongod 然后第二个错
  • 一个 ajax 调用会阻止其他 ajax 调用

    加载页面后 我会对 php 脚本执行 Ajax 调用 从而更新我的服务器 然而 这个脚本有时可能需要一分钟多的时间才能完成 并且在脚本运行时 我无法执行我需要处理的其他 Ajax 调用 即第一个 Ajax 调用不应中断其他 Ajax 调用
  • WebView 委托方法未被调用

    我想使用 UIWebViewDelegate 方法 我将其委托设置为 self 但仍然无法工作 void webViewDidStartLoad UIWebView webView NSLog Load view void webViewD
  • Google Sheets 脚本在从表单插入的行上插入时间戳?如何使用onChange检测插入的行?

    我正在尝试编写一个脚本 该脚本将在从表单 不是谷歌表单 插入 Google 工作表的行 第 23 列 上插入时间戳 它是其他一些供应商将数据发送到工作表并且不通过时间戳 我一直在尝试从示例中编写一些脚本 但似乎无法让它发挥作用 到目前为止我
  • 如何在失败的重新分配中释放 malloc

    我有这个结构 typedef struct person st char first name last name int id Date birthday pPerson Person 可以说我重新分配sizeof Person n 几次
  • 在不同的对象上调用闭包?

    假设我有这样的课程 class MyClass int myInt MyClass myInt this myInt myInt def myMethod print this myInt 我在某个地方有 def myClass1 new
  • JavaScript 中 0 毫秒的 setInterval() 行为

    在我的应用程序中 我发现一些 JavaScript 代码正在使用setInterval0 毫秒 如下所示 self setInterval myFunction 0 显然 这对我来说似乎不是一个好主意 谁能告诉我将会有什么行为setInte
  • 如何将比例平移应用到 DrawingContext?

    我有一个Canvas在 XAML 中应用比例转换 使用DrawingContext我在上面画线Canvas 我现在需要向屏幕添加文本 我认为使用格式化文本我可以应用翻译 但是格式化文本或DrawingContext接受RenderTrans
  • 通过cmd运行带引号的powershell命令

    我需要通过 CMD 运行 powershell 命令 我的命令是 Get WmiObject Class win32 pnpEntity Filter Name like ACPI Thermal Zone 1 GetDevicePrope
  • 使用 javascript/jquery 对 JSON 数据进行分组/排序

    我有一个 JSON 数据 我需要做一些类似 group by 的事情 我之前在这里问过这个问题 但我没有得到任何满意的答案 所以这次我想更深入地解释一下 首先 谁能解释一下两者之间的区别groupby and orderby在 javasc
  • 如何按帖子元素对帖子数组进行排序?

    我有一个应用程序 用户可以在其中搜索待售商品 我目前正在尝试添加功能 以便用户可以查看按价格从低到高排序的商品 用户点击排序按钮后 他们会看到另一个显示不同排序选项的视图控制器 第一个是 价格 从低到高 从低到高被点击后 我使用协议发回一个
  • Android Api 8. 从视图中获取 x 和 y,并在按钮上设置 x 和 y

    我正在使用 API 8 进行编码 我需要从视图中获取坐标 X 和 Y 并将它们设置为新按钮的坐标 我尝试了不同的方法但没有任何作用 setX 和 getX 方法仅适用于 api 级别 11 我需要一种方法在 API8 上执行此操作 这是我的
  • 将文本文件读入数组列表

    我对 Java 很陌生 所以我在解决这个问题时遇到了一些麻烦 所以基本上我有一个如下所示的文本文件 1 John false 2 Bob false 3 Audrey false 如何从文本文件的每一行创建一个 ArrayList 从文件中
  • 为一个小团队和多个并行项目设置 TFS

    我们有一个五人开发团队 将并行构建多个内部项目 经过研究 我发现最好创建一个团队项目 即使对于我们的情况也是如此 对吗 如果是这样 您能否建议如何为项目和时间表设置适当的迭代 TFS 问题 小团队 多个项目听起来与我的情况相似 但我似乎无法
  • 如何获取接口成员列表

    有没有办法获取接口成员列表 我了解 System Reflection MemberInfo 但它包括对象中的所有内容 而不仅仅是某个接口 这是程序 我不知道如何获得接口 因为它不是我写的 但它是 Ascom 标准的一部分 http asc
  • Android ExpandableListView - 寻找教程[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在尝试编写一个 And