Помогите с SimpleCursorTreeAdapter и getChildrenCursor () - PullRequest
3 голосов
/ 05 марта 2011

У меня есть база данных sqlite с тремя столбцами: идентификатор, дата и строка. С одной датой может быть связано несколько строк, поэтому у меня есть несколько строк с одной и той же датой только с разными строками.

Я хочу использовать ExpandableListView, чтобы показать эти данные. Мне нужно реализовать getChildrenCursor () в SimpleCursorTreeAdapter, чтобы использовать его для этой цели, но я не уверен, как это сделать. Я посмотрел на это и вижу, что он использует managedQuery, но у меня нет поставщика контента, поэтому я не могу его использовать. Из того, что я понимаю , цель getChildrenCursor () состоит в том, чтобы получить курсор только с данными, которые могут быть помещены в дочерний элемент, но я не вижу, как этот метод может разделять записи в соответствии с их даты, поскольку в качестве параметра ему передается только курсор.

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011

Я знаю, что уже на 8 месяцев поздно, но все же.

Вы можете создать курсор без поставщика контента.Откройте базу данных SQLite и выполните db.query (...) - это создаст курсор для вас.Это так же, как поставщики контента создают курсоры.

0 голосов
/ 09 июля 2014

Если вы не хотите использовать ContentProvider, попробуйте выполнить запрос в AsyncTask. Затем используйте метод changeCursor внутри onPostExecute, чтобы поменять курсор.

managedQuery не следует использовать, поскольку оно устарело в API 11.

Объект groupCursor можно использовать, чтобы получить «_id» для использования в запросах его дочерних данных. как SELECT * FROM 'TABLE' WHERE ID =? "?" являющийся столбцом идентификатора из группового курсора, который, скорее всего, будет использоваться в качестве внешнего ключа в другой таблице. Если вы все еще не уверены, попробуйте поискать "Нормализация базы данных" в Google.

0 голосов
/ 07 марта 2011
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {

    public MyExpandableListAdapter(Cursor cursor, Context context, int groupLayout,
            int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
            int[] childrenTo) {
        super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childrenFrom,
                childrenTo);
    }

    @Override
    @SuppressWarnings("deprecation")
    protected Cursor getChildrenCursor(Cursor groupCursor) {
        // Given the group, we return a cursor for all the children within that group 
        // Return a cursor that points to this contact's phone numbers
        Uri.Builder builder = People.CONTENT_URI.buildUpon();
        ContentUris.appendId(builder, groupCursor.getLong(mGroupIdColumnIndex));
        builder.appendEncodedPath(People.Phones.CONTENT_DIRECTORY);
        Uri phoneNumbersUri = builder.build();
        // The returned Cursor MUST be managed by us, so we use Activity's helper
        // functionality to manage it for us.
        return managedQuery(phoneNumbersUri, mPhoneNumberProjection, null, null, null);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...