Как отфильтровать гетерогенное повторное представление по поисковому фрагменту во фрагменте - PullRequest
1 голос
/ 27 октября 2019

Я хочу отфильтровать представление переработчика с помощью просмотра поиска, проблема в том, что я использую разнородное представление переработчика, которое показывает два просмотра карты: одно показывает данные горизонтально поверх другого, которое показывает данные вертикально нижепросмотр первой картыКак отфильтровать просмотры переработчика, отображая только вертикальные данные, когда в поисковом наборе набирается желаемое

Вот мой основной фрагмент пищи:

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

Я перепробовал множество доступных схем фильтрации, и ни одна из них не сработала, поэтому я разместил свой исходный код (после удаления схемы фильтрации).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...