在RecyclerView中搜索出错?

时间:2018-06-07 11:54:37

标签: android android-recyclerview call

我在我的适配器中添加了这个方法:

public  void filterlist(List<ListItem> newlist){
    listItems = new ArrayList<>();
    listItems.addAll(newlist);
    notifyDataSetChanged(); }
}

我在MainActivity中使用此代码来过滤列表,我无法调用 filterlist()方法

searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            //Do some magic
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            //Do some magic
            String item = newText.toLowerCase();
            List<ListItem> newlist = new ArrayList<>();
            for (ListItem name:listItems){
                if (name.getDoname().toLowerCase().contains(newText)){newlist.add(name);}
            }

            // the is problem in this line

            adapter.filterlist(newlist); 
            return true;
        }
    }

此行adapter.filterlist(newlist);

中存在问题

我无法调用方法 filterlist 出现红色为什么?

2 个答案:

答案 0 :(得分:0)

而不是

destinationCityName

请执行以下操作:

listItems = new ArrayList<>();
listItems.addAll(newlist);

这是因为不是创建列表的新实例,而是修改适配器的现有列表实例以通知更改,

答案 1 :(得分:0)

适配器中的更新列表如下所示,

 public void updateList(ArrayList<Currency> temp) {
            this.mCurrencyList = temp;
            notifyDataSetChanged();
        }

您必须在搜索框字段中应用此功能。 您在Query更改侦听器上应用了我实现了addTextChangeListener

searchBox.addTextChangedListener(new TextWatcher() {
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count) {}

    @Override
    public void afterTextChanged(Editable s) {
    ArrayList<Currency> temp = new ArrayList();
    for (Currency d : mCurrencyList) {
    if (d.getCode().toLowerCase().contains(s.toString().toLowerCase())) {
    temp.add(d);
                }
                 }
    mSelectCurrencyAdapter.updateList(temp);
                    }
    });

最重要的是你应用了搜索视图,我应用了编辑文本视图。

但我认为这也适用于搜索视图。