gpt4 book ai didi

android - 使用 MergeCursor 和 SimpleCursorAdapter,缺少什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:37 24 4
gpt4 key购买 nike

无论我做什么,下面都会抛出一个错误,即 cursor_counterparty 中包含的列之一不存在。当我检查 merge_cursor 时,我可以在其中找到该列,这是我的代码,我做错了什么?

cursor_invoices = Invoices.getInvoicesCursor(counterparty.getId());
Cursor cursor_counterparty = Counterparties
.getCounterpartyCursor(counterparty.getId());
startManagingCursor(cursor_invoices);
startManagingCursor(cursor_counterparty);

/* Joins cursors akin to doing an SQL join */

MergeCursor merge_cursor = new MergeCursor(new Cursor[] {
cursor_invoices, cursor_counterparty });
merge_cursor.moveToFirst();

int[] listview_columns = new int[] { R.id.textview_invoice_number,
R.id.textview_counterparty_name, R.id.textview_amount,
R.id.textview_account_name, R.id.textview_invoice_date,
R.id.textview_date_paid };
String[] listview_fields = new String[] { App.INVOICENUMBER,
App.COUNTERPARTYNAME, counterparty_amount_field,
App.ACCOUNTNAME, App.INVOICEDATE, App.DATEPAID };

SimpleCursorAdapter cursor_adapter_invoices = new SimpleCursorAdapter(
this, R.layout.listview_invoice_item, merge_cursor,
listview_fields, listview_columns);

我得到的错误是:

java.lang.IllegalArgumentException: column 'counterparty_name' does not exist

当我调试应用程序时,我可以在 merge_cursor 的一个游标中看到“counterparty_name”作为一列。

任何帮助都会很棒,谢谢!

最佳答案

您要垂直(添加行)还是水平(添加列)连接游标?

这是理论,因为我没有看过代码,但它对我来说很有意义......

MergeCursor 垂直(事实)串联游标,一个接一个。因此,对于游标的一部分,您有一组列,而对于另一部分,您有一组不同的列(假设)。

您的适配器正在尝试为正在显示的行查找一个部分或另一部分中不存在的列。

如果您更改为连接列的 CursorJoiner,我认为它会更像您期望的那样工作,尽管我不知道如何适本地排列行。

很好的解释here

编辑

我看到您使用相同的 ID 来获取每个游标,所以我担心将它们排成一行是无关紧要的。我认为您确实需要 CursorJoiner 而不是 MergeCursor。

关于android - 使用 MergeCursor 和 SimpleCursorAdapter,缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com