Cursor c = db.rawQuery("select _id, first,second from mainTable", null);
ClientCursorAdapter adapter = new ClientCursorAdapter(this, R.layout.listview, c, 0 );
listView.setAdapter(adapter);
//c.close();
После этого в ListView
передается курсор и на нем отображается содержимое курсора, но, если я закрываю курсор в конце, то в приложении выходит ошибка - курсором же все еще пользуется ListView
. А если оставляю курсор открытым, то есть убираю c.close()
, то все нормально - ошибок нету.
Оставлять курсор открытым – это же неправильно. Что тут можно придумать?
Для работы с курсором в Android есть замечательный класс CursorLoader
, который самостоятельно следит за его жизненным циклом и актуальным состоянием (самостоятельно закрывает курсор, когда им больше не пользуются и обновляет его при изменении данных), так же решает проблемы изменения конфигурации (поворота), работает в асинхронном режиме и другие преимущества.
Официальная документация
Пример использования в адаптере с двумя типами данных и фильтром
Добавлю свои пять копеек:
целиком поддерживая пост @pavloff - вынужден признать, что бывают случаи, когда не все можно отработать в рамках CursorLoader
В таких случаях, когда трудно лоцировать когда нужно закрывать Cursor
'ы надо их закрывать в методе onDestroy()
активити. Если речь идет о диалоге, то закрывать их в onDismiss()
. Для фрагментов - лучшее место onDestroyView()
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я использую сервер tomcat и деплою на него мое grails приложениеУ меня не получилось найти нормальное решение на groovy (все плагины не работают, а разбираться...
Мой сервер должен обрабатывать запросы от VK APIКак я понимаю, они идут на 80 порт только, но это основной порт, и отключить его слушателей я не могу
Пишу программу на Java + PostgreSQLНужно сделать поиск по нескольким полям как на фото:
Здравствуйте, у меня небольшая проблема возникла, мне необходимо организовать поиск по всем пользователям по базе данных, сохраняю данные...