为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2019-10-10 16:50:43
我创建了一个具有多个项目的列表视图。我还在上面创建了一个搜索框。我想基于列表的特定字段实现搜索功能。我该如何实现?任何帮助将不胜感激。
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

为此,您首先需要添加一个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);


            }

        });


查看完整回答
反对 回复 2019-10-10
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您可以为搜索框设置一个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);


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 623 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信