【发布时间】:2026-02-03 00:45:02
【问题描述】:
我正在尝试构建一个可扩展的 ListView。
我有一个包含 3 个表的数据库,目前我需要从中提取内容(并更新一些内容)。此外,我使用自己的内容提供程序和活动的内容解析器与我的数据库进行交互。将来,我将添加一些 SOAP 调用以将我的语言环境数据库同步到远程数据库,关于 Virgil Dobjanschi 的 Rest 设计模式(或者至少,我会尝试......)。
我的第一个问题是:我应该为我的 ELV 使用哪个适配器?
我从 BaseExpandableListAdapter 开始,但我注意到我总是必须自己进行查询才能提取和更新数据。例如:
EditText et;
et = (EditText) convertView.findViewById(R.id.explist_qty);
et.setOnClickListener(mController);
Cursor cursor = _context.getContentResolver().query(
MyContentProvider.getUri(QuantityTable.TABLE_QUANTITY),
new String[]{ QuantityTable.COLUMN_QUANTITY },
QuantityTable.COLUMN_STOCK_ID +"=="+groupPosition, null, null);
String qty = cursor.getString(cursor.getColumnIndexOrThrow((QuantityTable.COLUMN_QUANTITY)));
et.setText(qty);
我认为这不是正确的选择,因为我需要一个光标来处理所有事情。这就是我寻找 CursorTreeAdapter 的原因,但我在某处红了它经常用来避免制作内容提供者/解析器模式。现在我肯定迷路了,我需要你的帮助。
有关信息,我的 ELV 将 TextView 显示为标题,并将一些 EditTexts / Buttons 显示为子项。我需要按钮来更新 EditText 和 2 个数据库(使用我的 Content Provider 进行区域设置,使用 SOAP 调用进行远程设置)。
我的第二个问题来了:我怎样才能让我的观点刷新自己关于 locale DB 的看法?
我已经听说过 Observer/Observable 设计模式,但我不确定它是否可以用数据库完成,我可能错了。
我正在学习 Android,所以对于像我这样的菜鸟来说,了解一切是如何进行的以及有哪些好的做法有点困难。
谢谢大家。
【问题讨论】:
标签: android database adapter android-contentprovider expandablelistview