我有一个包含多个表的SQLite数据库。对于每个表,我试图使用自定义CursorTreeAdapter表示ExpandableListView中的所有数据。据我所知,方法 getChildrenCursor 返回一个光标,指向填充子视图所需的数据。但是,我没有具体了解如何使用 groupCursor 参数检索子游标。
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
String[] projection = { "columnNeeded" };
return context.getContentResolver()
.query(CONTENT_URI, projection, null, null, null);
}
上面的方法将返回一个游标,该游标返回包含我需要的列的所有行。这是正确的方法吗?
在表的每一行的“columnNeeded”列中,它包含jsonArray的String表示形式。我试图使用JSONArray将arrayList存储到表的每一行。因此,我正在尝试检索此arrayList并使用此arrayList填充子视图,如下所示:
@Override
protected void bindChildView(View view, Context context, Cursor cursor, boolean isLastChild) {
TextView name = (TextView) view.findViewById(R.id.summary_child_name);
TextView bill = (TextView) view.findViewById(R.id.summary_child_bill);
String arrayListString = cursor
.getString(cursor.getColumnIndex("columnNeeded"));
JSONObject json = new JSONObject();
try {
json = new JSONObject(arrayListString);
} catch (JSONException e) {
Log.e(LOG_TAG, "Unable to retrieve list of items");
}
JSONArray jsonArray = json.optJSONArray(ReceiptContract.JSONARRAY_NAME);
// retrieveArrayList iterates through jsonArray and adds it to items
items = retrieveArrayList(jsonArray);
name.setText(What do I put here?);
bill.setText(What do I put here?);
}
如您所见,我已设法将整个数组列表检索为ArrayList类型对象。但是,我坚持在子视图中显示数组列表。关于如何做到这一点的任何想法?
答案 0 :(得分:0)
使用 HashMap 将数据存储为关键值,并使用 BaseExpandableListAdapter
将数据填充到 ExpandableListView 中