В моем ListView имеется более 3000 строк. И когда я набираю EditText для фильтрации данных в моем ListView, он работает медленно. Посмотрите на мой код здесьФильтр EditText медленно запускается, когда данные фильтра
final TextWatcher textChecker = new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
filterData(search.getText().toString());
}
};
private void filterData(String textinput){
mCursor = mHelperData.searchData(textinput);
startManagingCursor(mCursor);
String[] from = new String[]{ MyData.KEY_ROWID,
MyData.KEY_TITLE, MyData.KEY_DESCRIPTION };
int[] to = new int[]{ R.id.id, R.id.title, R.id.description, R.id.icon };
setListAdapter(new MyAdapter(this, R.layout.list_row, mCursor, from, to));
}
Я думаю, что получение данных с помощью курсора здесь не очень хорошо. Итак, есть ли лучший способ улучшить речь в этом случае?
+1 для помощи разработчикам думать о том, что лучше всего/проще для * пользователей * разработчики – I82Much
Да, пользователю очень сложно прокручивать 3000 строк с помощью экрана телефона. Но мое приложение здесь просто используется для цели «Поиск». Во всяком случае, ваш ответ дает мне некоторое вдохновение, и я думаю, может быть, я мог бы сделать что-то другое здесь. Спасибо огромное! – Dennie
Если ваше приложение предназначено только для поиска, не помещайте 3000 элементов в список. Вместо этого просто укажите поле поиска, выполните поиск и покажите результаты. Пример: при поиске в Android Market вы не получаете ListView всех приложений на рынке, которые затем фильтруются. Вместо этого вы получаете поле поиска и получаете только ListView, показывающий соответствующие результаты. – CommonsWare