【问题标题】:SearchView for more than 1 recyclerview超过 1 个回收站的 SearchView
【发布时间】:2018-02-17 13:57:54
【问题描述】:

您好,我有一个带有 7 个标签view pager,所有标签里面都有一个 recyclerview 我想为所有标签添加搜索. 我试图将它们全部添加到一个回收器视图中进行搜索,但我真的不知道该怎么做。 任何人都可以给我一些提示如何做到这一点? 我想在我的代码中添加一个搜索对话框和一个包含我所有项目的单个回收器视图,这可能吗? 而且我所有的 recyclerViews 都有自己的 Adapter 和 Parser 和 Model,它们都彼此不同

代码如下:

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

【问题讨论】:

  • 您的所有选项卡中都有 Single recyclerview 吗?
  • 没有 2 个有另一个 viewpager,上面有 2 个 recyclerViews
  • 你想做什么?按editText搜索?
  • SearchView 没有
  • 您的 searchView 是否处于活动状态?你想得到 Fragments 的结果吗?

标签: android android-recyclerview searchview


【解决方案1】:

在这里,您为所有不同的RecyclerView 使用了 7 个不同的pojo 类。如果您想按单个 searchView 搜索,则必须将所有 pojo 数据添加到单个 pojo 类。但是,如果您将所有数据添加到单个 pojo 搜索时会出现结果,但是您很难找到该片段。

如果您只需要该 viewPager 片段的结果。然后,您必须为所有 pojo 类实现相同的 searchView,并且您必须仅在该 fragment 上获得结果。

【讨论】:

  • 将所有 pojo 数据添加到单个 pojo 并仅按该 pojo 执行搜索,因此您将获得所有数据的搜索结果。
  • 欢迎@Sadegh,很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多