Как правильно фильтровать текст в ListView?

Я пытался отфильтровать свой ListView из своего поля EditText, но в настоящее время он не работает.

У меня есть ListView, который правильно получает данные, и они добавляются в мой собственный ListView с помощью класса ArrayAdapter и моего собственного класса ArrayList. Когда я, например, набираю «таблицу», я хочу, чтобы она отсортировывалась от загруженных заголовков в моем ListView, и тогда он должен был показать мне оставшиеся элементы и соответствующую таблицу.

Мой текущий код:

private ArrayList<Order> orders; /* ArrayList class with my own Order class to 
define title, info etc. */
private OrderAdapter adapter; //Own class that extends ArrayAdapter

orders = new ArrayList<Order>();
adapter = new OrderAdapter(this, R.layout.listrow, orders); /* listrow defining a
single item in my ListView */
setListAdapter(adapter); //Set our adapter to a ListView

search.addTextChangedListener(filterTextWatcher); //search is my EditText

private TextWatcher filterTextWatcher = 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) {
        adapter.getFilter().filter(s); //Filter from my adapter
        adapter.notifyDataSetChanged(); //Update my view
    }

};

Хорошо, так как я могу этого добиться? Когда я ввожу какое-то значение в поле EditText, все исчезает, даже если есть совпадение.

Заранее спасибо и сообщите мне, нужны ли вам дополнительные фрагменты кода или если этот вопрос мне неясен!

6
задан Curtain 5 October 2010 в 06:38
поделиться