Intereting Posts
Android, Как фильтровать социальный обмен для того, чтобы иметь только Facebook и Twitter? Android – менеджер уведомлений, имеющий уведомление без намерения Идентификатор ресурса не найден для атрибута paddingEnd в пакете 'android' Могу ли я управлять фонариком без использования android.hardware.Camera? Обслуживание, которое выполняется каждую минуту Узнайте, какие использует – разрешение поддерживает SmartPhone Android IME, установите позицию курсора в EditText Тестирование узла с помощью RxJava CompositeSubscription Измерение интенсивности света с камеры Android Нажмите кнопку «Назад», чтобы показать обновленное значение в действии Android – макет-большая папка игнорируется Как удалить приложение из adb, не зная, что это имя пакета Надежный метод получения страны, в которой находится пользователь? Платеж Android in-app возвращает код ответа сервера 2. Что это значит? Как получить 20+ результат от Google Places API?

Ведение списка 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? Все комментарии вместе? Ну это я посмотрю и отредактирую свой ответ.