Android ExpandableListActivity 和 SimpleCursorTreeAdapter?

2023-11-26

我正在为 Android 编写一个简单的应用程序。

我有两张桌子 - 一张名为“grous”,另一张名为“group_items”。

我想使用可扩展列表来显示两个表中的数据。

最好的方法是什么?是否可以使用SimpleCursorAdapter来映射数据?我找不到任何有用的例子。

我看到了使用 ArrayAdapter 创建可扩展列表的示例,所以我应该先将数据转换为数组,然后用它创建可扩展列表,还是有办法直接执行此操作?

我不需要完整的工作示例 - 只需要关于什么是正确且最有效的方法的建议。

Leonti


我发现最简单的解决方案是使用 SimpleCursorTreeAdapter。 这是代码示例(重要部分):

public class ExercisesList extends ExpandableListActivity {


private ExcercisesDbAdapter mDbHelper; // your db adapter
private Cursor mGroupsCursor; // cursor for list of groups (list top nodes)
private int mGroupIdColumnIndex;
private MyExpandableListAdapter mAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mDbHelper = new ExcercisesDbAdapter(this);
        mDbHelper.open();
        fillData();
}

private void fillData() {
        mGroupsCursor = mDbHelper.fetchAllGroups(); // fills cursor with list of your top nodes - groups 
        startManagingCursor(mGroupsCursor);

        // Cache the ID column index
        mGroupIdColumnIndex = mGroupsCursor
                        .getColumnIndexOrThrow(ExcercisesDbAdapter.KEY_ROWID);

        // Set up our adapter
        mAdapter = new MyExpandableListAdapter(mGroupsCursor,this,

                        android.R.layout.simple_expandable_list_item_1,
                        R.layout.exercise_list_row,

                        new String[] { ExcercisesDbAdapter.KEY_TITLE }, // group title for group layouts
                        new int[] { android.R.id.text1 },

                        new String[] { ExcercisesDbAdapter.KEY_TITLE }, // exercise title for child layouts
                        new int[] { R.id.exercise_title });

        setListAdapter(mAdapter);
}

// extending SimpleCursorTreeAdapter
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {

        public MyExpandableListAdapter(Cursor cursor, Context context,
                        int groupLayout, int childLayout, String[] groupFrom,
                        int[] groupTo, String[] childrenFrom, int[] childrenTo) {
                super(context, cursor, groupLayout, groupFrom, groupTo,
                                childLayout, childrenFrom, childrenTo);
        }

        // returns cursor with subitems for given group cursor
        @Override
        protected Cursor getChildrenCursor(Cursor groupCursor) {
                Cursor exercisesCursor = mDbHelper
                                .fetchExcercisesForGroup(groupCursor
                                                .getLong(mGroupIdColumnIndex));
                startManagingCursor(exercisesCursor);
                return exercisesCursor;
        }

        // I needed to process click on click of the button on child item
        public View getChildView(final int groupPosition,
                        final int childPosition, boolean isLastChild, View convertView,
                        ViewGroup parent) {
                View rowView = super.getChildView(groupPosition, childPosition,
                                isLastChild, convertView, parent);

                Button details = (Button) rowView.findViewById(R.id.view_button);

                details.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {

                                Cursor exerciseCursor = getChild(groupPosition, childPosition);

                                Long exerciseId = exerciseCursor.getLong(exerciseCursor.getColumnIndex(ExcercisesDbAdapter.KEY_ROWID));

                                Intent i = new Intent(ExercisesList.this, ExerciseView.class);
                                i.putExtra(ExcercisesDbAdapter.KEY_ROWID, exerciseId);
                                startActivity(i);
                        }
                });

                return rowView;
        }

}

}

希望它会有用;)

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

Android ExpandableListActivity 和 SimpleCursorTreeAdapter? 的相关文章

  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • Android Widget ID 是否持久

    在从桌面删除该 Widget 实例之前 您从操作系统收到的用户桌面上特定 Widget 实例的 Widget ID 是否一致 我找不到任何明确说明这一点的文档 但我假设这是因为文档说您可以使用小部件 id 来存储任何实例配置信息 我想将一些
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 如何使用retrofit2动态设置超时?

    public class Router private static Retrofit retrofit null public Retrofit getRetrofit if retrofit null OkHttpClient clie
  • 在 Android 市场中以编程方式检查我的应用程序版本

    目前 我正在启动时检查应用程序版本代码 并将其与我的服务器上的最新版本代码进行匹配 并根据此匹配 我发送用户从 Android 市场获取最新更新 它运行良好 但我的问题是我必须手动更改服务器上的最新版本代码 并且我不知道新版本何时发布APK
  • 如何从Slog中查看日志

    如何查看 Slog API 生成的日志 是否有任何选项可以查看系统缓冲区中的日志 我的意思是查看我们使用的无线电缓冲区的日志 adb logcat b 无线电 而这个日志是由Android的Log类生成的 Slog API 的输出在哪里 怎
  • Android,如何从 XML 布局添加 Google 地图选项?

    我有一个包含 MapView 的片段 我已将此视图添加到 XML 文件中 如下所示
  • 如何在 Android 中创建始终位于顶部的全屏覆盖 Activity

    我希望能够创建一个始终位于 Android 显示前面的 Activity 它不应该接收任何输入 只需将其传递到其下面的任何应用程序即可 像平视显示器之类的东西 我能够研究我需要将底层窗口类型设置为 TYPE SYSTEM ALERT 但看起
  • 突出显示列表视图项目

    我需要在触摸列表视图项目时突出显示它并保持突出显示状态 我尝试了我发现的一切 但没有任何效果 这是我的代码 这是列表视图
  • 在活动启动期间优雅地处理屏幕方向变化

    我正在尝试找到一种方法来正确处理设置活动 其中活动的方向是根据启动它的意图中的数据确定的 这是一款用户可以选择关卡的游戏 其中一些是纵向的 一些是横向的 我面临的问题是setRequestedOrientation ActivityInfo
  • Python sqlite3参数化删除表

    我在 python 中删除 sqlite3 表时遇到问题 我正在使用标准sqlite3模块 self conn sqlite3 connect sql drop table self conn execute sql u table nam
  • 如何从画布中删除路径区域(Android)

    我需要裁剪角落ImageView 不要将它们弄圆 而是擦除每个角上的三角形 似乎唯一的方法就是覆盖onDraw方法并使用从画布上删除这些区域Path 问题是我没有纯色背景 所以我需要擦除这些区域 但不要用某种颜色填充它们 我为此使用以下代码
  • 如何防止应用程序被盗(针对Android应用程序)?

    我想知道防止人们窃取我的应用程序的最有效方法是什么 在线下载 apk 的副本而不是购买它 我已经花了一个lot特别是 Droidbox 上的时间 并且不会发布 Sync 直到我可以保证提供专业版本的非法副本的人无法发布 有人实施过这个吗 我
  • 有没有办法创建 PWA(渐进式 Web 应用程序)的 Android 桌面小部件?

    我正在构建一个渐进式 Web 应用程序 有没有办法创建 Android 桌面小部件 None
  • DialogFragment 关闭事件

    我需要处理 DialogFragment 的结尾 在调用 dismiss 之后 例如 我会在关闭后 包含 片段的活动内显示一个 toast 我该如何处理该事件 覆盖onDismiss 在你的DialogFragment中 或者使用setOn
  • 活动中列表视图中的粘滞行

    我的列表视图中只有一行应该是粘性的 而不是粘性标题中带有字母的部分或部分 我真的很感激任何关于列表视图在活动中粘性一行而不是片段的帮助 我该怎么做 我真的很感谢任何帮助 提前致谢 使用如下代码 class MyAsyncTask exten
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • 在两个片段之间拖放视图

    我目前正在尝试在两个片段之间实现拖放 我已经将它们添加到我的活动中 如下所示 FragmentManager fm getFragmentManager FragmentTransaction ft fm beginTransaction
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐

  • 在 R 中复制矩阵的行

    假设我有一个矩阵m和一个正整数向量v 我想做的是得到一个新的矩阵m new和每一行m say m i 被复制v i 次在m new 例如 m matrix 1 6 nrow 3 1 2 1 1 4 2 2 5 3 3 6 v c 3 1 2
  • 为什么 GCC 不在编译时评估 constexpr?

    举个例子 class something public static constexpr int seconds int hour int min int sec return hour 3600 min 60 sec then print
  • JFreeChart - 将图表线的 SeriesStroke 从实线更改为单线虚线

    此处接受的答案 JFreechart Java 如何绘制部分虚线和部分实线的线 帮助我开始改变图表上的系列划线 在单步执行我的代码并观察更改后 我发现我的系列笔画实际上在应该的时候 在某个日期 dashedAfter 之后 更改为 dash
  • 陷入 Azure OAuth2 令牌请求中的两个错误之间

    我正在为 OWIN 和 Azure Active Directory 实现 OAuth2 提供程序 FWIW 目前 OpenId Connect 选项不符合这项工作的要求 我获得一个身份验证代码 并使用 auth code 状态返回到我的回
  • 在反向传播中使用 sigmoid 函数计算误差

    我有一个关于反向传播的简单问题 我正在看以下内容 http www4 rgu ac uk files chapter3 20 20bp pdf 在这篇论文中 它说计算神经元的误差为 Error 输出 i 1 输出 i 目标 i 输出 i 我
  • 达到内存限制时 NSCache 崩溃(仅在 iOS 7 上)

    我们在应用程序中使用 NSCache 作为 UIImages 这在小于 7 的 iOS 版本上工作得很好 当发生内存警告时 NSCache 按预期释放对象 然而 在 iOS 7 上 我们的应用程序在第一次内存警告后不久就崩溃了 因此 似乎使
  • 工具栏外观中的 extjs 按钮

    嘿 我确实有一个小问题 但我似乎无法找到答案 当我在 extjs 工具栏中放置一个按钮时 它会以默认外观出现 就像任何 Windows 工具栏选项一样 我如何使它看起来像表单中的按钮 尝试这样 tbar xtype button text
  • 如何检索这台计算机的IP地址?

    检索机器 IP 地址 第一个打开的接口 的最不麻烦 模块包含 代码长度等 的方法是什么 我知道一些使用 MSINET 的解决方案 但我相信我们可以做得更好 不要回复 Function HomeIP as Atring HomeIP 127
  • 加载没有 Segue 的 StoryBoard 视图

    我真的很喜欢将所有视图都放在故事板中 但有时我会看到一个基于代码生成的按钮显示的视图 因此不会有 Segue 引用 它将完全断开连接故事板 不过 我仍然想在故事板中设计它 这样我就可以对所有屏幕有一个很好的概览 当加载 UIViewCont
  • iOS应用程序更新测试

    有没有一种方法可以测试应用程序何时更新 我很尴尬 因为有一个错误只在应用程序更新时出现 并且没有调查 如果您问是否想通过应用程序商店查找应用程序何时更新 我不知道有这样的方法 执行此操作的一种黑客方法是将当前应用程序版本保存到 NSUser
  • 在队列为空之前调用 join 时,Python 3 多处理队列死锁

    我对理解队列中的队列有疑问multiprocessingpython 3中的模块 这就是他们在编程指南 请记住 已将项目放入队列的进程将在之前等待 终止 直到所有缓冲的项目都被 feeder 线程送入 底层管道 子进程可以调用 Queue
  • 如何增加 Sphinx / 重构文本中的固定宽度字体大小?

    我正在使用 Sphinx 生成使用重构文本作为标记的文档 但是 当我使用一些内联格式使文本以固定宽度字体显示时 no cache渲染的 HTML 以较小的字体显示文本 如何增加 Sphinx reStructured Text 中的固定宽度
  • 手机间隙没有状态栏?

    我一直试图让状态栏消失 因为我想放入全屏游戏 我在 iPhone 上使用 PhoneGap 提前致谢 对于 iPhone 只需添加
  • MATLAB 中的特征值

    在 MATLAB 中 当我运行命令时 V D eig a 对于对称矩阵 最大特征值 及其相关向量 位于最后一列 但是 当我使用非对称矩阵运行它时 最大特征值位于第一列 我正在尝试计算特征向量中心性 这要求我计算与最大特征值相关的特征向量 因
  • 在 GCC 风格的扩展内联汇编中,是否可以输出“虚拟化”布尔值,例如进位标志?

    如果我有以下 C 代码来比较两个 128 位无符号整数 并使用内联 amd 64 asm struct uint128 t uint64 t lo hi inline bool operator lt const uint128 t a c
  • Firefox、Edge 和 IE 中的 Flexbox 列反转

    我正在尝试制作一个响应式应用程序 在较大的屏幕上 有一个 div 列表 您可以滚动up查看以前的 div 传统 行为 在较小的屏幕上 它显示相同的列表 但顺序相反 因此滚动down看到显示div 我认为 flexbox 将是一个很棒的解决方
  • Entity Framework Core 服务默认生命周期

    在 ASP NET Core 应用程序中 我可以像这样通过 DI 注册 DbContext services AddDbContext
  • Android 将值从 Activity 传递到适配器

    我想将变量从活动传递到适配器 我的适配器看起来像这样 public SampleAdapter Activity context ArrayList
  • PhoneGap:修改 config.xml 以将属性添加到 Info.plist ion iOS

    对于我的应用程序 我需要向 iOS 的 Info plist 文件添加一些设置 我认为最好的方法是将这些设置添加到我的 config xml 文件中 我正在使用 PhoneGap 当我将以下内容添加到 config xml 文件并运行时 c
  • Android ExpandableListActivity 和 SimpleCursorTreeAdapter?

    我正在为 Android 编写一个简单的应用程序 我有两张桌子 一张名为 grous 另一张名为 group items 我想使用可扩展列表来显示两个表中的数据 最好的方法是什么 是否可以使用SimpleCursorAdapter来映射数据