如何在Android的自定义列表视图中使用搜索功能

我创建了一个具有多个项目的列表视图。我还在上面创建了一个搜索框。我想基于列表的特定字段实现搜索功能。我该如何实现?任何帮助将不胜感激。



蛊毒传说
浏览 624回答 3
3回答

梵蒂冈之花

为此,您首先需要添加一个edittext,在其中键入以过滤列表中的数据,然后在列表中启用过滤,editText = (EditText) findViewById(R.id.searchList); adapter = new CustomListViewAdapter(this,                R.layout.list_row, rowItems);        listView.setAdapter(adapter);        listView.setTextFilterEnabled(true);然后,您需要TextChangeListener()为edittext 添加,editText.addTextChangedListener(new TextWatcher() {            public void onTextChanged(CharSequence arg0, int arg1, int arg2,                    int arg3) {            }            public void beforeTextChanged(CharSequence arg0, int arg1,                    int arg2, int arg3) {            }            public void afterTextChanged(Editable arg0) {                MyActivityName.this.adapter.getFilter().filter(arg0);            }        });

缥缈止盈

您可以为搜索框设置一个TextWatcher,并在TextWatcher的onTextChanged()上更改光标,如以下代码所示:TextWatcher filterNameTextWatcher = new TextWatcher() public void beforeTextChanged(CharSequence s, int start, int count,int after)        {        }        public void onTextChanged(CharSequence s,int start, int before,int count)         {            Cursor FilteredNameList = ZoneCardDBAdapter.instance.CursorFilteredName(s.toString());            Listadapter.changeCursor(FilteredNameList);        }        @Override        public void afterTextChanged(Editable arg0)         {           }    };EditText filterTextName = (EditText)this.findViewById(R.id.edtZoneCardNameFilter);filterTextCPName.addTextChangedListener(filterNameTextWatcher);
打开App,查看更多内容
随时随地看视频慕课网APP