Я хочу искать через RecyclerView
, у меня есть List<BaseOfCards>
(BaseOfCards мой добытчик & класс сеттер) Мой RecyclerViewAdapter:Поиск по RecyclerView с помощью SearchView
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;
}
}
}
добавить SearchView в мое меню и инициализировать его в 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
или что? Или просто введите класс filter
в * RecyclerViewAdapter ** и просто позвоните ему из моего MainActivity?
Прохладный, я добавлю эту функциональность с помощью этого метода ('getFilter') в свой https://github.com/davideas/FlexibleAdapter ;-) – Davidea
@Davidea oh, отлично, спасибо! – Ololoking
Я добавил эту функциональность, но это было сложнее, чем предполагалось. В самом деле, я не уверен, что этот фильтр включен в адаптере *, потому что * Объекты в адаптере ** уже являются ** копией чего-то оригинального, исходящего из источника, такого как DB/XML/JSON, в качестве объекта домена - Проблема заключается не в фильтре, а в добавлении/del/mod, который вы выполняете в ** отфильтрованном списке **: все изменения должны также отражаться в «исходном» списке адаптеров ** И ** в исходном источнике ... В этот момент более удобен для того, чтобы иметь отфильтрованный список копий непосредственно из источника и обновить адаптер с этим списком. – Davidea