список поиска в нашем приложении в android?

Привет, в моем приложении есть представление списка и раздел поиска. Что мне нужно сделать, так это когда я ищу слово в разделе поиска, он должен отсортировать соответствующий вид списка в соответствии со словом, которое я ищу. У меня есть код для сортируя имя, но моя настоящая проблема в том, что если мне нужно искать слово, например, мне нужно искать

Рамз супер

это одно имя в моем текущем коде, мне нужно искать, например, из R, затем A и т. д. в правильном порядке, чтобы отсортировать имя. Но мне нужно, чтобы, если я начну поиск из Super, мне нужно чтобы показать имя Ramz super в списке. как я могу это сделать, мой текущий код поиска показан ниже

    search_sort.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            // Abstract Method of TextWatcher Interface.
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // Abstract Method of TextWatcher Interface.
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            textlength = search_sort.getText().length();
            array_sort.clear();
            contactnumber_sort.clear();
            for (int i = 0; i < contactname.size(); i++) {
                if (textlength <= contactname.get(i).length()) {
                    if (search_sort.getText()
                            .toString()
                            .equalsIgnoreCase(
                                    (String) contactname.get(i).subSequence(
                                            0, textlength))) {
                        array_sort.add(contactname.get(i));
                        contactnumber_sort.add(contactnumber.get(i));
                    }
                }
            }
            System.out.println(array_sort);

            myadp = new myAdapter(MobiMailActivity.this, array_sort, contactnumber_sort);
            contactlist.setAdapter(myadp);
        }
    });

person Ramz    schedule 09.08.2012    source источник
comment
Взгляните на этот stackoverflow.com/questions/11823720   -  person Braj    schedule 09.08.2012


Ответы (1)


Попробуйте использовать contains() вместо equalsIgnoreCase(). Где datasetList является объектом моего пользовательского ArrayList<ContactList>.

  public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
        String getSearchString = search.getText().toString();

        if(datasetList != null && datasetList.size() > 0)
        {
            sortedList = new ArrayList<ContactDataSet>(); //new List sorted list 

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

                if (datasetList.get(i).getName().contains(getSearchString)) {
                    sortedList.add(datasetList.get(i));

                }
            }
        }           
        adapter.setnewList(sortedList);
        lView.setAdapter(adapter);

    }

Попробуйте это и дайте мне знать. Это работает для меня. Надеюсь, это поможет вам

person Akshay    schedule 09.08.2012
comment
когда я использую его, не получаю никаких значений - person Ramz; 09.08.2012
comment
@Рамз Как же так! проверьте, есть ли в вашем sortedList() данные или нет, потому что я использую этот код и получаю результат. Можете ли вы опубликовать обновленный исходный код? - person Akshay; 09.08.2012
comment
извините, получил окончательный ответ, спасибо, я его использую, если (contactname.get(i).toLowerCase().contains(s.toString().toLowerCase())) { array_sort.add(contactname.get(i)) ; contactnumber_sort.add(contactnumber.get(i)); contactemail_sort.add(contactemail.get(i)); } изменив код, спасибо :) - person Ramz; 09.08.2012