Я хочу отфильтровать представление переработчика с помощью просмотра поиска, проблема в том, что я использую разнородное представление переработчика, которое показывает два просмотра карты: одно показывает данные горизонтально поверх другого, которое показывает данные вертикально нижепросмотр первой картыКак отфильтровать просмотры переработчика, отображая только вертикальные данные, когда в поисковом наборе набирается желаемое
Вот мой основной фрагмент пищи:
public class foodFrag extends Fragment {
SearchView searchView;
private ArrayList<Object> objects = new ArrayList<>();
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.food_frag,container,false);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.MainRecyclerView);
final MainAdapter adapter = new MainAdapter(getContext(), getObject());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
searchView = (SearchView) view.findViewById(R.id.searchView);
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setIconifiedByDefault(false);
return view;
}
private ArrayList<Object> getObject() {
objects.add(getVerticalData().get(0));
objects.add(getHorizontalData().get(0));
return objects;
}
public static ArrayList<SingleVertical> getVerticalData() {
ArrayList<SingleVertical> singleVerticals = new ArrayList<>();
singleVerticals.add(
new SingleVertical(
R.drawable.chickenexpress,
"Chicken Express Fast Food Restaurant",
"Shahjanabad, 32, White House, Shahjahanabad, Peer Gate Area, Bhopal",
"4.3",
"INR 100"));
singleVerticals.add(
new SingleVertical(
R.drawable.merhaba,
"Merhaba Fast Food Restaurant",
"Shahjanabad, 32, White House, Shahjahanabad, Peer Gate Area, Bhopal",
"4.3",
"INR 100"));
return singleVerticals;
}
public static ArrayList<SingleHorizontal> getHorizontalData() {
ArrayList<SingleHorizontal> singleHorizontals = new ArrayList<>();
singleHorizontals.add(
new SingleHorizontal(R.drawable.off,
"50% off"));
singleHorizontals.add(
new SingleHorizontal(R.drawable.zamzam,
"Zam Zam"));
return singleHorizontals;
}
}
Вот мой код mainadapter:
public class MainAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private Context context;
private ArrayList<Object> items;
private final int VERTICAL = 1;
private final int HORIZONTAL = 2;
public MainAdapter(Context context, ArrayList<Object> items) {
this.context = context;
this.items = items;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(context);
View view;
RecyclerView.ViewHolder holder;
switch (i) {
case VERTICAL:
view = inflater.inflate(R.layout.vertical, viewGroup, false);
holder = new VerticalViewHolder(view);
break;
case HORIZONTAL:
view = inflater.inflate(R.layout.horizontal, viewGroup, false);
holder = new HorizontalViewHolder(view);
break;
default:
view = inflater.inflate(R.layout.horizontal, viewGroup, false);
holder = new HorizontalViewHolder(view);
break;
}
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder.getItemViewType() == VERTICAL)
verticalView((VerticalViewHolder) holder);
else if (holder.getItemViewType() == HORIZONTAL)
horizontalView((HorizontalViewHolder) holder);
}
private void verticalView(VerticalViewHolder holder) {
VerticalAdapter adapter1 = new VerticalAdapter(foodFrag.getVerticalData());
holder.recyclerView.setLayoutManager(new LinearLayoutManager(context));
holder.recyclerView.setAdapter(adapter1);
}
private void horizontalView(HorizontalViewHolder holder) {
HorizontalAdapter adapter = new HorizontalAdapter(getHorizontalData());
holder.recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
holder.recyclerView.setAdapter(adapter);
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public int getItemViewType(int position) {
if (items.get(position) instanceof SingleVertical)
return HORIZONTAL;
if (items.get(position) instanceof SingleHorizontal)
return VERTICAL;
return -1;
}
public class HorizontalViewHolder extends RecyclerView.ViewHolder {
RecyclerView recyclerView;
HorizontalViewHolder(View itemView) {
super(itemView);
recyclerView = (RecyclerView) itemView.findViewById(R.id.HorRecyclerView);
}
}
public class VerticalViewHolder extends RecyclerView.ViewHolder {
RecyclerView recyclerView;
VerticalViewHolder(View itemView) {
super(itemView);
recyclerView = (RecyclerView) itemView.findViewById(R.id.VerRecyclerView);
}
}
}
Я перепробовал множество доступных схем фильтрации, и ни одна из них не сработала, поэтому я разместил свой исходный код (после удаления схемы фильтрации).