2009-10-30 1 views
1

В моем 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)); 
} 

Я думаю, что получение данных с помощью курсора здесь не очень хорошо. Итак, есть ли лучший способ улучшить речь в этом случае?

ответ

3

Придумайте навигационный шаблон, который не требует, чтобы пользователь прокручивал или отфильтровывал 3000 строк.

Прокрутка или фильтрации 3000 строк будет очень раздражает на четырехъядерной рабочий стол с 4 Гб оперативной памяти, непрерывного переменного тока, в ЖК-дисплей 19" , полноразмерной клавиатуры и стандартной мыши.

Аналогично , ни один веб-сайт не стоит упоминать дампы 3000 записей для пользователя на одной странице ... и люди, использующие веб-браузеры, по-прежнему используют полноразмерные экраны, клавиатуры и мыши во многих случаях.

Просеивание через 3000 строк по телефону например, разделите эти 3000 строк на категории и сначала выберите категорию.

+0

+1 для помощи разработчикам думать о том, что лучше всего/проще для * пользователей * разработчики – I82Much

+0

Да, пользователю очень сложно прокручивать 3000 строк с помощью экрана телефона. Но мое приложение здесь просто используется для цели «Поиск». Во всяком случае, ваш ответ дает мне некоторое вдохновение, и я думаю, может быть, я мог бы сделать что-то другое здесь. Спасибо огромное! – Dennie

+0

Если ваше приложение предназначено только для поиска, не помещайте 3000 элементов в список. Вместо этого просто укажите поле поиска, выполните поиск и покажите результаты. Пример: при поиске в Android Market вы не получаете ListView всех приложений на рынке, которые затем фильтруются. Вместо этого вы получаете поле поиска и получаете только ListView, показывающий соответствующие результаты. – CommonsWare

1

Просто добавьте ответ Marks - Недавно я столкнулся с той же проблемой и came up with tutorial на Androidguys.com, который демонстрирует, как можно закодировать «бесконечный» список

Смежные вопросы