У меня есть один EditText
, который используется для ввода пользовательского ввода. Как только пользователь вводит определенные данные, прослушиватель смены текста, связанный с EditText
, вызывает обновленный курсор и пытается обновить результат, который отображается в ListView
, расположенный ниже.ListView часто зависает, когда обновляется курсор базы данных Sqlite.
Все в порядке. Но всякий раз, когда происходит какое-либо изменение в поисковом запросе, результирующий курсор и обновление ListView
занимает некоторое время, скажем, около n секунд. Во время этого промежутка n секунд пользовательский интерфейс останавливается (останавливает/зависает, что вы можете вызвать) и не отвечает до тех пор, пока не будет обновлен курсор и не будет заполнен весь ListView
.
Когда я попытался поместить обновление курсора в другой поток, он не позволял отражать его в пользовательском интерфейсе, поскольку пользовательский интерфейс не позволяет командовать другими потоками в действии. Любой пользовательский интерфейс, такой как обновление списка, должен быть реализован через runOnUiThread
в классе MainActivity
.
Просьба предлагать способы, с помощью которых я могу разрешить изменение EditText пользователем, а также обновленный курсор, обновляющий ListView, без ущерба для первого.
Я использовал CursorAdaptor и в методе BindView , Я сделал все, что нужно сделать. Но все же во время получения результата для заданного запроса, который возвращает 400 строк, требуется определенное время, в течение которого другие функции пользовательского интерфейса находятся в зависании. –
Вы использовали textChangeListner ??? –
Используйте obsever содержимого для отражения изменений в представлении. 400 записей не имеет значения. Вы можете использовать лимит и разбивку на страницы –