如何从活动中访问片段中的RecyclerView中的项目

时间:2018-05-05 08:17:34

标签: android android-activity android-recyclerview fragment

我的活动有TabLayout(我的Fragments所在的活动) myFragment本身有一个RecyclerView 我希望在myActicvity的textView中显示每个被触及的项目名称。

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

enter image description here

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

2 个答案:

答案 0 :(得分:1)

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

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

不要忘记注册和取消注册听众。

答案 1 :(得分:0)

您应该在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);
                }
            });