Фильтр списка просмотра от редактирования текста - PullRequest
3 голосов
/ 14 апреля 2011

У меня есть текст для редактирования в виде строки поиска и представление списка, которое фильтрует набранный текст, но, к сожалению, оно не фильтрует представление списка. Я использовал адаптер адаптера массива с объектом Friend. У объекта друга есть имя, адрес и номер телефона , но я хочу только отфильтровать его имя. В моей деятельности ...

searchBarTextView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    friendListAdapter.getFilter().filter(s);
}}

Находясь в адаптере ...

    @Override
    public Filter getFilter() {
        Log.d(TAG, "begin getFilter");
        if(newFilter == null) {
            newFilter = new Filter() {
                @Override
                protected void publishResults(CharSequence constraint, FilterResults results) {
                    // TODO Auto-generated method stub
                    Log.d(TAG, "publishResults");
                    notifyDataSetChanged();
                }</p>

<code>            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                Log.d(TAG, "performFiltering");

                constraint = constraint.toString().toLowerCase();
                Log.d(TAG, "constraint : "+constraint);

                List<ChatObject> filteredFriendList = new LinkedList<ChatObject>();

                for(int i=0; i<friendList.size(); i++) {
                    Friend newFriend = friendList.get(i);
                    Log.d(TAG, "displayName : "+newFriend.getDisplayName().toLowerCase());
                    if(newFriend.getDisplayName().toLowerCase().contains(constraint)) {
                        Log.d(TAG, "equals : "+newFriend.getDisplayName());
                        filteredFriendList.add(newFriend);
                    }
                }

                FilterResults newFilterResults = new FilterResults();
                newFilterResults.count = filteredFriendList.size();
                newFilterResults.values = filteredFriendList;
                return newFilterResults;
            }
        };
    }
    Log.d(TAG, "end getFilter");
    return newFilter;
}
</code>

Может кто-нибудь помочь мне, как правильно отобразить адаптер отфильтрованного массива? Я думаю, что notifyDataSetChanged не вызывается. Спасибо.

1 Ответ

4 голосов
/ 26 апреля 2011

Моя проблема решена, обнаружил, что мне нужно переопределить getCount () и getItem () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...