【问题标题】:Filter the RecyclerView list using the button使用按钮过滤 RecyclerView 列表
【发布时间】:2022-01-28 16:38:35
【问题描述】:

我通过 SearchView 找到了 RecyclerView 过滤代码。如何更改按钮的此代码?当按下按钮时,必须过滤相应的 RecyclerView。所有代码:

public void updateList(List<DataHolder> list){
     displayedList = list;
     notifyDataSetChanged();
}
searchField.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            // TODO Auto-generated method stub
        }

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

            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {

            // filter your list from your input
            filter(s.toString());
            //you can use runnable postDelayed like 500 ms to delay search text
        }
    });
void filter(String text){
     List<DataHolder> temp = new ArrayList();
     for(DataHolder d: displayedList){
           //or use .equal(text) with you want equal match
           //use .toLowerCase() for better matches
           if(d.getEnglish().contains(text)){
               temp.add(d);
           }
     }
     //update recyclerview
     disp_adapter.updateList(temp);
}

谢谢!

编辑:

【问题讨论】:

    标签: java android android-recyclerview


    【解决方案1】:

    在 java/kotlin 文件中的布局和 setOnClickListener 中添加一个按钮,然后单击按钮过滤列表。就像你之前在afterTextChanged()(调用filter(s.toString());)中所做的那样需要在setOnClickListener() 中完成

    【讨论】:

    • 它确实有效,但我有一个问题。当我单击 Cars 按钮时,RecyclerView 被过滤为 Cars。但是当我在搜索中输入名称“卡车”时,也会出现“卡车”。
    • 我只想在按下按钮时搜索“汽车”。请帮帮我。
    • 这部分程序有一个过滤按钮和一个过滤编辑文本。
    • 所以你希望过滤只能使用按钮完成?
    • 不,不仅仅是点击一个按钮。例如。过滤 Cars 按钮并提取列表后,使用 EditText 搜索应该只搜索 Cars。我更新了我的问题并添加了我的设计。
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2016-03-04
    • 2018-09-06
    相关资源
    最近更新 更多