我的活动有TabLayout
(我的Fragments
所在的活动)
myFragment本身有一个RecyclerView
我希望在myActicvity的textView
中显示每个被触及的项目名称。
这是一张解释我问题的图片。
我该怎么做?感谢您的帮助!
答案 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);
}
});