Android-对RecyclerView实施搜索过滤器

Thorvald Olavsen:

我需要根据一个实现搜索功能EditText,以我的RecyclerView键入时必须过滤列表。

这是代码:

DisplayAdapter.java,这是适配器

public class DisplayAdapter extends RecyclerView.Adapter<DisplayAdapter.MyViewHolder>{
    private List<DataHolder> displayedList;
    public class MyViewHolder extends RecyclerView.ViewHolder{
        public TextView english_d;
        public MyViewHolder(View view){
              super(view);
              english_d = (TextView) view.findViewById(R.id.engword);
        }
   }
    public DisplayAdapter(List<DataHolder> displayedList){
        this.displayedList = displayedList;
      }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int position)    {
    // create a layout
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);

    return new  MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    DataHolder content = displayedList.get(position);
    holder.english_d.setText(content.getEnglish());
   }
@Override
public int getItemCount() {
    return displayedList.size();
   }
}

DataHolder.java

public class DataHolder {
private String english;


public DataHolder() {
}

public DataHolder(String english, String norse) {
    this.english = english;

}

public String getEnglish() {
    return english;
}

public void setEnglish(String english) {
    this.english = english;
   }

}

这是我正在使用的片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_two_fragment, container, false);

        rv = (RecyclerView) view.findViewById(R.id.list_view_english);
        rv.setHasFixedSize(true);

        inputSearch = (EditText) view.findViewById(R.id.inputSearch);

        rv.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL));
        final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        rv.setLayoutManager(layoutManager);


        DisplayContent();


        disp_adapter = new DisplayAdapter(displayedList);

        rv.setAdapter(disp_adapter);
   return view;
}
ZeroOne:

在您的适配器中添加新功能以更新列表

public void updateList(List<DataHolder> list){
     displayedList = list;
     notifyDataSetChanged();
}

添加textWatcher进行搜索可以说您正在使用Edittext作为搜索字段

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);
}


牛刀

@OnTextChanged(R.id.feature_manager_search)
protected void onTextChanged(CharSequence text) {
    filter(text.toString());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

搜索过滤器后如何更新android RecyclerView项目?

使用条件实施搜索过滤器

列表视图过滤器Android

如何在Android Studio Logcat中突出显示过滤器/搜索命中

如何使用带有Google Maps Android API的过滤器搜索餐厅?

RecyclerView搜索过滤器位置错误

在Android中实现搜索过滤器

使用搜索过滤器实现回收者视图时,会多次触发Android Button Click事件吗?

RecyclerView搜索过滤器不起作用

Android RecyclerView多个过滤器

如何为从Firestore填充的RecyclerView实施过滤器?

Android如何使用androidx.recyclerview.widget.DiffUtil应用多个过滤器

如何在Android分页库中为列表,过滤器和搜索维护相同的数据源

实施双边过滤器

Android:ListView加载更多(OnScrollListener)搜索过滤器

如何将搜索意图过滤器和android.app.searchable应用于所有活动?

Android-带搜索过滤器和设置图标的操作栏

Android ListView过滤器不按搜索按钮问题

Android recyclerview过滤器在单击searchview图标之前不显示任何项目

Android:意图过滤器验证失败

Google Endpoint + Objectify + Android过滤器或搜索

Yalantis搜索过滤器具有适用于Android的自定义背景色

android tab view fragment Recycler视图搜索过滤器

android 中搜索过滤器屏幕的最佳 UX 模式是什么?

带有复选框的 Android 自定义 ListView 搜索,过滤器不起作用

Android 搜索过滤器在没有结果时显示文本视图

android recyclerview 通过我的编辑文本搜索过滤器

如何在 Android recyclerview 中停止搜索过滤器的不断崩溃

如何在android中的简单列表视图上使用startsWith应用搜索过滤器