简体   繁体   English

超过 1 个回收站的 SearchView

[英]SearchView for more than 1 recyclerview

Hi i have a view pager with 7 tabs and inside all of them is one recyclerview i want to add Search for all of them.嗨,我有一个带有7 个选项卡视图寻呼机,其中所有选项卡都是一个recyclerview,我想为所有这些选项卡添加搜索。 i tried to add all of them into one recycler view for search but i really don't know how to do that.我试图将所有这些添加到一个回收器视图中进行搜索,但我真的不知道该怎么做。 any one can give me some tips to how do it?任何人都可以给我一些如何做的提示? i want to add a Search Dialog to my code and a single recycler View with all of my items this is possible?我想在我的代码中添加一个搜索对话框和一个包含我所有项目的回收者视图,这可能吗? and also all of my recyclerViews have there own Adapter and Parser and Model all of them is different with each Other而且我所有的 recyclerViews 都有自己的 Adapter 和 Parser 和 Model,它们彼此都不同

Here is the code :这是代码:

RecyclerView Adapter Class : RecyclerView 适配器类:

public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchViewHolder> {


public SearchAdapter(Context context,int code) {
    this.code = code;
    this.context = context;
}
private Context context;
private int code;
private View view;
@Override
public SearchViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    switch (code){
        case 1:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item,parent,false);
            return new SearchViewHolder(view);
        case 2:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_layout,parent,false);
            return new SearchViewHolder(view);
        case 3:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.last_world_memes_list_item,parent,false);
            return new SearchViewHolder(view);
        case 4:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.ex_list_tours_child,parent,false);
            return new SearchViewHolder(view);
        case 5:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.last_url_view,parent,false);
            return new SearchViewHolder(view);
        case 6:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.twitch,parent,false);
            return new SearchViewHolder(view);
    }
    return new SearchViewHolder(view);
}

@Override
public void onBindViewHolder(SearchViewHolder holder, int position) {
    switch (code){
        case 1:

    }
}

@Override
public int getItemCount() {
    return 0;
}

class SearchViewHolder extends RecyclerView.ViewHolder{
    //Events
    AppCompatTextView timeEvent ,tvPrizeEvent ,tvGameModeEvent ,tvBuyInEvent ,tvLateRegEvent
            ,tvSiteEvent ;
    AppCompatImageView ivEvent ;
    LinearLayout layoutEvent ;
    //Sites
    TextView tvSites;
    RelativeLayout headerImageSites;
    AppCompatImageView btnRevilSites;
    AppCompatTextView infoTvSites;
    AppCompatTextView infoDateSites;
    AppCompatButton btnUrlSites;
    AppCompatButton btnTelegramSites;
    AppCompatButton btnSupportSites;
    RelativeLayout layoutSites;
    AppCompatButton btnRegSites;
    LinearLayout layour_btnSites;
    RelativeLayout parentLayoutSites;
    //Tours
    RelativeLayout layoutTours ;
    SharedPreferences preferencesTours ;
    AppCompatTextView timeTourTours  ,tvPrizeTours  ,tvGameModeTours ,tvBuyInTours ,tvLateRegTours
            ,tvReBuyTours ,tvDaysTours;
    Clock clockTours ;
    //Memes
    AppCompatImageView ivMemes;
    AppCompatTextView tvIvMemes;
    AppCompatTextView tvDateIvMemes;
    public RelativeLayout layoutMemes;
    //News
    TextView tvNews;
    CardView btnNews;
    //Twitch
    AppCompatTextView viewrsTwitch ;
    AppCompatTextView languageTwitch;
    AppCompatTextView statusTwitch;
    CircleImageView profileTwitch;
    AppCompatImageView imageViewTwitch ;
    AppCompatTextView tvNameTwitch ;
    RelativeLayout urlLayoutTwitch ;
    SearchViewHolder(View itemView) {
        super(itemView);
        switch (code){
            case 1:
                timeEvent = (AppCompatTextView) itemView.findViewById(R.id.time_event);
                tvPrizeEvent = (AppCompatTextView) itemView.findViewById(R.id.event_prize);
                tvGameModeEvent = (AppCompatTextView) itemView.findViewById(R.id.event_gamemode);
                tvBuyInEvent = (AppCompatTextView) itemView.findViewById(R.id.event_buy_in);
                tvLateRegEvent = (AppCompatTextView) itemView.findViewById(R.id.event_late_reg);
                tvSiteEvent = (AppCompatTextView) itemView.findViewById(R.id.event_site);
                ivEvent = (AppCompatImageView) itemView.findViewById(R.id.iv_events);
                layoutEvent = (LinearLayout) itemView.findViewById(R.id.events_layout);
                return;
            case 2:
                tvNews = (TextView) itemView.findViewById(R.id.news_tv);
                btnNews = (CardView) itemView.findViewById(R.id.card_view_news);
                return;
            case 3:
                ivMemes = (AppCompatImageView) itemView.findViewById(R.id.last_world_news_iv);
                tvIvMemes = (AppCompatTextView) itemView.findViewById(R.id.last_world_news_iv_tv);
                tvDateIvMemes = (AppCompatTextView) itemView.findViewById(R.id.last_world_news_date_iv_tv);
                return;
            case 4:
                timeTourTours = (AppCompatTextView) itemView.findViewById(R.id.time_tour);
                tvPrizeTours = (AppCompatTextView) itemView.findViewById(R.id.tour_prize);
                tvGameModeTours = (AppCompatTextView) itemView.findViewById(R.id.tour_gamemode);
                tvBuyInTours = (AppCompatTextView) itemView.findViewById(R.id.tour_buy_in);
                tvLateRegTours = (AppCompatTextView) itemView.findViewById(R.id.tour_late_reg);
                tvReBuyTours = (AppCompatTextView) itemView.findViewById(R.id.tour_rebuy);
                tvDaysTours = (AppCompatTextView) itemView.findViewById(R.id.tour_days);
                clockTours = (Clock) itemView.findViewById(R.id.clock);
                return;
            case 5:
                tvSites = (TextView) itemView.findViewById(R.id.tv_sites);
                headerImageSites = (RelativeLayout) itemView.findViewById(R.id.last_url_cover_image);
                btnRevilSites = (AppCompatImageView) itemView.findViewById(R.id.btn_revil);
                infoTvSites = (AppCompatTextView) itemView.findViewById(R.id.info_tv);
                infoDateSites = (AppCompatTextView) itemView.findViewById(R.id.info_date);
                btnUrlSites = (AppCompatButton) itemView.findViewById(R.id.btn_url);
                btnTelegramSites = (AppCompatButton) itemView.findViewById(R.id.btn_telgram);
                btnSupportSites = (AppCompatButton) itemView.findViewById(R.id.btn_sup);
                layoutSites = (RelativeLayout) itemView.findViewById(R.id.revil);
                layour_btnSites = (LinearLayout) itemView.findViewById(R.id.layout_btn);
                btnRegSites = (AppCompatButton) itemView.findViewById(R.id.btn_reg);
                return;
            case 6:
                urlLayoutTwitch = (RelativeLayout) itemView.findViewById(R.id.url_layout);
                statusTwitch = (AppCompatTextView) itemView.findViewById(R.id.streamer_status);
                profileTwitch = (CircleImageView) itemView.findViewById(R.id.logo);
                imageViewTwitch = (AppCompatImageView) itemView.findViewById(R.id.twitch_icon);
                tvNameTwitch = (AppCompatTextView) itemView.findViewById(R.id.streamer_name);
        }
    }
}

Here you are using 7 different pojo classes for all of your different RecyclerView .在这里,您为所有不同的RecyclerView使用了 7 个不同的pojo类。 If you want to search by single searchView then you have to Add all of your pojo data to single pojo class.如果您想通过单个searchView进行搜索,那么您必须将所有pojo数据添加到单个pojo类中。 But if you add all of your data to single pojo result will come when you will search , but it will be difficult for you find that fragment.但是,如果您将所有数据添加到单个pojo ,则搜索时会出现结果,但是您很难找到该片段。

If you want result for that viewPager fragment only.如果您只想要该 viewPager 片段的结果。 Then you have to implement same searchView for all of your pojo classes, and you have to get result on that fragment only.然后您必须为所有pojo类实现相同的searchView ,并且您必须仅在该fragment上获得结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM