【问题标题】:how to access items in RecyclerView in fragment from an activity如何从活动的片段中访问 RecyclerView 中的项目
【发布时间】:2018-05-05 08:17:33
【问题描述】:

我的活动有一个TabLayout(我的Fragments 所在的位置) 并且 myFragment 本身有一个 RecyclerView
我想在 myAccticvity 中的 textView 中显示每个被触摸的项目的名称。

这是一张解释我的问题的图片。

我该怎么做?感谢您的帮助!

【问题讨论】:

    标签: android android-activity android-recyclerview fragment


    【解决方案1】:

    您可以使用事件总线:https://github.com/greenrobot/EventBus。该库可帮助您将事件从一个活动/片段/视图发送到另一个。您必须只为项目根元素添加 onclicklistener,然后执行以下操作:EventBus.getDefault().post(getItemName());。在您的活动中添加以下内容:

    @Subscribe(threadMode = ThreadMode.MAIN)  
    public void onMessageEvent(String name) {
       textView.setText(name);
    };
    

    别忘了注册和注销监听器。

    【讨论】:

      【解决方案2】:

      您应该在您的 recyclerView 适配器中编写 onItemCLickListener ,然后从您的活动中调用它来设置 textview 文本。

      适配器代码:

       OnItemClickListener onItemClickListener;
       public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
              this.onItemClickListener = onItemClickListener;
          }
      
      
        public interface OnItemClickListener {
              void onClick(int position,String itemName);
          }
      
       @Override
       public void onBindItemViewHolder(final AdapterRecycelerView.ViewHolderRecyclerItem holder, final int position) {
      
              try {
      
                  holder.linearItem.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View view) {
                          if (onItemClickListener != null)
                              onItemClickListener.onClick(position,arrayList.get(position).getName());
                      }
                  });
              } catch (Exception e) {
                  e.printStackTrace();
              }
      
          }
      

      活动代码:

       adapterRecycelerView.setOnItemClickListener(new AdapterRecycelerView.OnItemClickListener() {
                      @Override
                      public void onClick(int position,String itemName) {
                         textview.setText(itemName);
                      }
                  });
      

      【讨论】:

      • 我有你提供的适配器,但问题是 myFragment 包括 recyclerview 而不是活动,我想在我的活动中处理它
      • @Tara:你需要在片段中添加另一个监听器到Activity来通知点击。
      • @ישו אוהב אותך 你能解释一下吗,tnx
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多