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

使用getFilter函数时ListView为空白

使用getFilter函数时ListView为空白

慕田峪4524236 2019-10-22 22:39:20
我想实现getFilter()我的功能ListView,但每次我输入的东西EditText我ListView就会消失。我的SetHelpRows档案:public class SetHelpRows {    String name;    String id;    public String getName () {        return name;    }    public void setName (String name) {        this.name = name;    }    public String getID () {        return id;    }    public void setID (String id) {        this.id = id;    }    public SetHelpRows(String name, String id) {        super();        this.name = name;        this.id = id;    }}我的部分MainActivity文件:inputSearch = (EditText) findViewById(R.id.etSearch);dataList = (ListView) findViewById(R.id.lvFiles);for (int y=0; y<strNames.length;y++) {    name = strNamesOfAllah[y];    meaning = strMeaning[y];    rowsArray.add(new SetRows(R.drawable.icon, name, meaning));}adapter = new SetRowsCustomAdapter(MainActivity.this, R.layout.customlist, rowsArray);dataList.setAdapter(adapter);dataList.setClickable(true);inputSearch.addTextChangedListener(new TextWatcher() {    @Override    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {        // When user changed the Text        //MainActivity.this.adapter.getFilter().filter(cs);        //String text = inputSearch.getText().toString().toLowerCase();        adapter.getFilter().filter(cs.toString().toLowerCase(Locale.US));    }    @Override    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {        //TODO Auto-generated method stub    }    @Override    public void afterTextChanged(Editable arg0) {        //TODO Auto-generated method stub                             }});在中,LogCat我确实看到以下内容:12-12 12:15:57.077: I/Before Filter(720): Before Filter12-12 12:15:57.106: I/prefix is !null or !0(720): prefix is !null or !012-12 12:15:57.216: I/publish result(720): publish result
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您不需要实现自己的Filter,如果您使用,则ArrayAdapter可以重写toString方法SetHelpRows以返回名称。然后,您可以调用ArrayAdapter内置的Filter。


这不是您问题的直接答案,而是建议更改您的实现。


查看完整回答
反对 回复 2019-10-22
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

请在您的publishResults函数中尝试


               @Override

               protected void publishResults(CharSequence constraint, FilterResults results) {


                   Log.i("publish result", "publish result");

                   data = (ArrayList<SetRows>)results.values;

                   notifyDataSetChanged();


               }


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

添加回答

举报

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