我想通过RecyclerView
搜索,我有List<BaseOfCards>
(BaseOfCards是我的getter &二传手类) 我RecyclerViewAdapter:搜索通过RecyclerView使用搜索查看
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
private LayoutInflater inflater;
private List<BaseOfCards> items;
//private int itemLayout;
//String cardvalue;
private Activity mActivity;
public RecyclerViewAdapter(Activity mActivity, Context context, List<BaseOfCards> items) {
this.mActivity = mActivity;
inflater = LayoutInflater.from(context);
this.items = items;
//this.itemLayout = itemLayout;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.custom_row, parent, false);
MyViewHolder holder = new MyViewHolder(view, mActivity);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
BaseOfCards item = items.get(position);
holder.title.setTag(item);
holder.title.setText(item.getCardName());
}
@Override
public int getItemCount() {
return items.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
private Activity mActivity;
TextView title;
ImageView titileImageView;
public MyViewHolder(View itemView, Activity mActivity) {
super(itemView);
titileImageView = (ImageView) itemView.findViewById(R.id.image_country);
title = (TextView) itemView.findViewById(R.id.listText);
this.mActivity = mActivity;
}
}
}
我添加搜索查看我的菜单,并在初始化MainActivity:
MenuItem menuItem = menu.findItem(R.id.action_search1);
searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setIconifiedByDefault(true);
我需要什么,下一步该怎么做?让我的RecyclerViewAdapterimplement Filterable
还是什么?或者只是在* RecyclerViewAdapter **中创建类filter
,并从我的MainActivity中调用它?
很酷,我会在我的https://github.com/davideas/FlexibleAdapter ;-)中加入这个功能('getFilter');-) – Davidea 2015-07-20 21:03:04
@Davidea哦,非常棒,非常感谢! – Ololoking 2015-07-20 21:59:33
我添加了这个功能,但它比预想的更复杂。事实上,我不相信在适配器中有这样的过滤器,因为适配器中的对象已经是**原始内容中来自诸如DB/XML/JSON之类的源的副本,作为域对象 - 问题不在过滤器上,而是在**过滤的**列表上执行的add/del/mod:所有更改都应该反映在“原始”适配器列表中** AND **在原始源代码中... At此点更方便直接从源和更新适配器与该列表中筛选复制列表。 – Davidea 2015-07-21 11:56:58