【问题标题】:Custom expandable list view with child search filter带有子搜索过滤器的自定义可扩展列表视图
【发布时间】:2011-08-12 03:47:35
【问题描述】:

我已经实现了一个带有搜索过滤器的列表视图,但现在,我必须将其更改为带有子搜索过滤器的可扩展列表视图。将有一个编辑文本作为搜索栏并过滤所有组的所有子项。就是这样的场景,

*Person - 对象包括姓名、地址、电话号码和照片。

第 1 组 - 朋友(孩子 1 - 人,孩子 2 - 人,孩子 3 - 人)

第 2 组 - 家庭(儿童 1 - 人,儿童 2 - 人)

第 3 组 - 同事(孩子 1 - 人,孩子 2 - 人,孩子 3 - 人,孩子 4 - 人)

到目前为止,我必须从数组适配器移植到基本可扩展列表适配器和可过滤的。有人可以帮我弄这个吗?谢谢。

【问题讨论】:

    标签: android filter expandablelistview


    【解决方案1】:
    edit = (EditText)findViewById(R.id.editText1);
    edit.addTextChangedListener(filterTextWatcher);
    

    private TextWatcher filterTextWatcher = new TextWatcher() {
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {  
    
        } 
    
        public void onTextChanged(CharSequence s, int start, int before, int count) {  
    
        }
    
        public void afterTextChanged(Editable s) {
            ((Filterable) ((ListAdapter) Adapter)).getFilter().filter(edit.getText().toString());
        }  
    };
    

    public class ListAdapter extends BaseExpandableListAdapter  implements Filterable {
        public void notifyDataSetInvalidated() {
            super.notifyDataSetInvalidated();
        }
    
        public Filter getFilter() {
            if (filter == null)
                filter = new MangaNameFilter();
                return filter;
            }
    

    private class MangaNameFilter extends Filter {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            // NOTE: this function is *always* called from a background thread, and
            // not the UI thread.
            constraint = edit.getText().toString().toLowerCase();
            FilterResults result = new FilterResults();
            if(constraint != null && constraint.toString().length() > 0) {
                detailsList = detailsSer.GetAlldetails();
                dupCatList = detailsList;
    
                ArrayList<detailsEntity> filt = new ArrayList<detailsEntity>();
                ArrayList<detailsEntity> lItems = new ArrayList<detailsEntity>();
                synchronized(this) {
                    lItems.addAll(dupCatList);
                }
    
                for(int i = 0, l = lItems.size(); i < l; i++) {
                    detailsEntity m = lItems.get(i);
    
                    if (m.description.toLowerCase().contains(constraint))
                        filt.add(m);
                    }
    
                    result.count = filt.size();
                    result.values = filt;
                } else {
                    detailsList = detailsSer.GetAlldetails();
                    dupCatList = detailsList;
                    synchronized(this) {
                        result.count = dupCatList.size();
                        result.values = dupCatList;
                    }
                }
                return result;
            }
    
            @SuppressWarnings("unchecked")
            @Override
            protected void publishResults(CharSequence constraint, FilterResults result) {
                // NOTE: this function is *always* called from the UI thread.
    
                filtered = (ArrayList<detailsEntity>)result.values;
    
                ArrayList<Integer> IdList = new ArrayList<Integer>();
                IdList.clear();
                for(int i = 0; i < filtered.size(); i++) {
                    IdList.add(filtered.get(i).catID);
                }
    
                HashSet<Integer> hashSet = new HashSet<Integer>(IdList);
                midList = new ArrayList<Integer>(hashSet) ;
                Collections.sort(midList);
                Adapter = new CategoryListAdapter(context, R.layout.list1, R.layout.list2, filtered, midList);
                List.setAdapter(Adapter);
            }
        }                   
    }
    

    【讨论】:

    • 你能解释一下我如何实现这个解决方案吗?汉克斯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多