Ведение списка ListView, в котором каждый элемент списка имеет отношение от одного до другого

Способ настройки моего приложения заключается в том, что у меня есть ListView, поддерживаемый CursorLoader, сообщений, сделанных пользователями. У каждого сообщения есть комментарии пользователей, которые связаны с ним. Каждый listitem имеет настраиваемое текстовое представление внизу, где прокручиваются комментарии (с правильным или левым салфеткой). Внутри каждого из пользовательских текстовых просмотров есть список комментариев, связанных с его конкретным сообщением. Его вроде комментариев о приложении Google+, за исключением элементов, прокручиваются. Комментарии хранятся в отдельной таблице базы данных, чем записи.

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда вызывается BindView, я запрашиваю базу данных и получаю курсор с соответствующими комментариями и добавляю его в пользовательский список текстовых просмотров. Это кажется действительно неэффективным для запроса таблицы базы данных комментариев для каждого элемента. Поэтому мне интересно, будет ли идеальный способ справиться с этим. Мой код выглядит примерно так:

public void bindView(View view, Context context, Cursor cursor) final String rowid = cursor.getString(cursor.getColumnIndexOrThrow(Database.ROWID)); Cursor commentcursor = c.getContentResolver().query(DatabaseProvider.CONTENT_URI_COMMENTTABLE, freeWriteCommentColumns, Database.PARENTPOSTROWID + " =?", new String[]{rowid}, null); commentcursor.moveToFirst(); while (commentcursor.isAfterLast() == false){ //get comment //add to comment text view list } 

Я посмотрел на CursorJoiners, но это не кажется полезным. Я играл с JOINS, но это делает число строк намного больше, чем нужно. Я сейчас играю с держателем для курсора таблицы комментариев, который создается при создании адаптера и задается как глобальная переменная. Это похоже на достойный проспект, потому что мне не нужно каждый раз требовать. Я просто не уверен, как справиться с этой ситуацией.

Solutions Collecting From Web of "Ведение списка ListView, в котором каждый элемент списка имеет отношение от одного до другого"

Я знаю, что он пробовал это, но это путь. У меня была почти такая же проблема, даже большая, потому что моя была с JOIN, а затем MergeCursor. Но вернемся к вашей проблеме: bindView () вызывается в пользовательском интерфейсе, и вы выполняете вызовы БД в потоке пользовательского интерфейса, это плохая практика и, кроме того, вы используете весь курсор. Я бы присоединился к запросу для сообщения и конкатенировал комментарии на уровне загрузки SQL, а затем я бы просто использовал один курсор для сообщений и комментариев, и все было бы намного лучше.

Как конкатрировать строку на уровне SQL? Все комментарии вместе? Ну это я посмотрю и отредактирую свой ответ.