Как искать элемент в динамическом ListView в Android?

Я пытаюсь разработать функцию поиска в списке элементов с помощью класса адаптера.

введите здесь описание изображения

Как использовать функцию поиска в списке, когда список динамически получает все элементы из базы данных php-mysql через веб-сервис json.

Я разместил завершенный код по этой ссылке.


person Amardeepvijay    schedule 19.03.2014    source источник
comment
Взгляните на этот androidhive.info/2012/ 09/   -  person    schedule 19.03.2014
comment
В этой ссылке данные являются статическими. Я извлекаю данные через json и адаптер, используемый для привязки данных в представлении списка.   -  person Amardeepvijay    schedule 19.03.2014
comment
Это не имеет ничего общего со статическими или динамическими данными. Потому что вы применяете фильтр к адаптеру. Таким образом, любые данные, которые содержит ваш адаптер, будут применяться к нему.   -  person    schedule 19.03.2014
comment
Вы следовали учебнику?   -  person    schedule 19.03.2014
comment
я следую инструкциям, но обнаружил ошибку в методе onTextChanged, в этой строке->>>AddToOutlet.this.adapter.getFilter().filter(cs);   -  person Amardeepvijay    schedule 19.03.2014
comment
давайте продолжим это обсуждение в чате   -  person Amardeepvijay    schedule 19.03.2014
comment
возможный дубликат функции поиска в представлении списка в Android   -  person user    schedule 20.03.2014


Ответы (1)


У вас есть все данные в Arraylist, вы просто реализуете TextWatcher в своей деятельности и вызываете метод списка фильтров в onTextchanged.

 @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub
    adp.filterList(s);
}
// add this method in adapter
    public emotions_adapter(Context context, ArrayList<String> emotions_symbol,
        ArrayList<String> emotions_name) {
    emo_symbole = emotions_symbol;
    emo_name = emotions_name;
    this.response_name = emotions_name;
    this.response_symbol = emotions_symbol;
    C = context;
    l_Inflater = LayoutInflater.from(context);

}

public void filterList(CharSequence s) {
    if (s.toString().length() > 0) {
        ArrayList<String> filteredname = new ArrayList<String>();
        ArrayList<String> filteredsymbole = new ArrayList<String>();

        for (int i = 0; i < response_name.size(); i++) {

            if (response_name.get(i).toLowerCase().contains(s.toString().toLowerCase())|| response_symbol.get(i).toLowerCase()
                            .contains(s.toString().toLowerCase())) {

                filteredname.add(response_name.get(i));
                filteredsymbole.add(response_symbol.get(i));
            }
        }

        emo_name = filteredname;
        emo_symbole = filteredsymbole;
    } else {
        emo_name = response_name;
        emo_symbole = response_symbol;

    }
notifyDataSetChanged();
}
person Rhn Bhadani    schedule 19.03.2014