Custom Listview Adapter with filter Android

后端 未结 10 898
北荒
北荒 2020-11-22 06:07

Please am trying to implement a filter on my listview. But whenever the text change, the list disappears.Please Help Here are my codes. The adapter class.

p         


        
10条回答
  •  闹比i
    闹比i (楼主)
    2020-11-22 06:46

    please check below code it will help you

    DrawerActivity.userListview
                .setOnItemClickListener(new OnItemClickListener() {
    
                    @Override
                    public void onItemClick(AdapterView parent, View view,
                            int position, long id) {
    
                        int pos = position;
                        Intent intent = new Intent(getContext(),
                                UserDetail.class);
                        intent.putExtra("model", list.get(position));
                        context.startActivity(intent);
                    }
                });
        return convertView;
    }
    
    @Override
    public android.widget.Filter getFilter() {
    
        return new android.widget.Filter() {
    
            @Override
            protected void publishResults(CharSequence constraint,
                    FilterResults results) {
    
                ArrayList updatelist = (ArrayList) results.values;
                UserListCustomAdaptor newadaptor = new UserListCustomAdaptor(
                        getContext(), getCount(), updatelist);
    
                if (results.equals(constraint)) {
                    updatelist.add(modelobj);
                }
                if (results.count > 0) {
                    notifyDataSetChanged();
                } else {
    
                    notifyDataSetInvalidated();
                }
            }
    
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
    
                FilterResults filterResults = new FilterResults();
                list = new ArrayList();
    
                if (constraint != null && DrawerActivity.userlist != null) {
    
                    constraint = constraint.toString().toLowerCase();
                    int length = DrawerActivity.userlist.size();
                    int i = 0;
                    while (i < length) {
    
                        UserListModel modelobj = DrawerActivity.userlist.get(i);
                        String data = modelobj.getFirstName() + " "
                                + modelobj.getLastName();
                        if (data.toLowerCase().contains(constraint.toString())) {
                            list.add(modelobj);
                        }
    
                        i++;
                    }
                    filterResults.values = list;
                    filterResults.count = list.size();
                }
                return filterResults;
            }
        };
    }
    
    @Override
    public int getCount() {
        return list.size();
    }
    
    @Override
    public UserListModel getItem(int position) {
    
        return list.get(position);
    }
    

提交回复
热议问题