标签:android listview simplecursoradapter mergecursor
无论我做什么,下面都会抛出一个错误,即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
当我调试App时,我可以在merge_cursor中的一个游标中看到’counterparty_name’作为列.
任何帮助都会很棒,谢谢!
解决方法:
您想要垂直(添加行)还是水平(添加列)加入游标?
这是理论,因为我没有看到代码,但它对我有意义……
MergeCursor一个接一个地垂直连接游标(事实).因此,对于光标的一部分,您有一组列,而另一组则有一组不同的列(假设).
您的适配器正在尝试查找一个部分或另一部分中不存在的列,用于显示的行.
如果您更改为连接列的CursorJoiner,我认为它会更像您期望的工作,尽管如何恰当地排列行我不知道.
一个很好的解释here
编辑
我看到你使用相同的ID来获取每个光标,所以我对它们排队的担忧是无关紧要的.我想你确实想要CursorJoiner而不是MergeCursor.
标签:android,listview,simplecursoradapter,mergecursor 来源: https://codeday.me/bug/20190626/1290523.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。