使用数据库中的数据填充ExpandableListView

时间:2017-07-12 07:34:49

标签: java android expandablelistview

我有一个包含多个表的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类型对象。但是,我坚持在子视图中显示数组列表。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

使用 HashMap 将数据存储为关键值,并使用 BaseExpandableListAdapter

将数据填充到 ExpandableListView