Android ListView/GridView 搜索過濾功能

Android ListView/GridView 搜索過濾功能:

 
如下圖需要實現的功能:在搜索框輸入內容,列表只顯示與所輸內容相同的選項。




實現:


1.給EditText添加監聽事件

 

 mEtSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                //當輸入框的內容不爲空時,顯示過濾後的數據列表,否則顯示全部列表
                filterData(s.toString());  
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
2.過濾列表數據

    /** 
     * 根據輸入框中內容過濾數據,並更新GridView 
     * @param filterStr 
     */  
    private void filterData(String filterStr) {  
        List<Face> filterDateList = new ArrayList<Face>();  
        //當輸入框的內容爲空時顯示全部列表
        if (TextUtils.isEmpty(filterStr)) {  
            filterDateList = faceList;  
        } else { 
            //清空 
            filterDateList.clear();  
            //遍歷列表
            for (Face face : faceList) {  
                String name = face.getFaceName();
                 
                if (name.trim()
                      .contains(mEtSearch.getText().toString())) {  
                    filterDateList.add(face);  
                }  
            }  
        } 
        //更新GridView
        adapter.updateGridView(filterDateList);  
    }  
3.重置數據源,更新顯示列表

    /** 
     * 當GridView數據發生變化時,更新GridView 
     * @param list 
     */  
    public void updateGridView(List<Face> list){  
        this.data = list;  
        notifyDataSetChanged();  
    }  


 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章