我正在开发的应用程序有一个标签视图,其中包含两个片段,每个片段在回收器视图中包含卡片视图 现在,卡片视图中有一个图像视图,我希望在fragment1中可见,但不能在fragment2中看到。但我无法实现这一目标 我在RecyclerView适配器中尝试的代码是 -
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_event, parent, false);
FragmentManager manager = ((Activity)mContext).getFragmentManager();
Fragment fragment1 = manager.findFragmentById(R.id.TabFragment1);
if(fragment1!= null){
image_view.setVisibility(View.VISIBLE);
}
return new MyViewHolder(itemView);
}
在card_event(CardView)中的image_view最初是不可见的,我只希望它在TabFragment1中可见。
答案 0 :(得分:0)
您的代码完全正常,但您错过了else
阻止您的情况。尝试替换
Fragment fragment1 = manager.findFragmentById(R.id.TabFragment1);
if(fragment1!= null){
image_view.setVisibility(View.VISIBLE);
}
与
Fragment fragment1 = manager.findFragmentById(R.id.TabFragment1);
if(fragment1!= null){
image_view.setVisibility(View.VISIBLE);
} else {
image_view.setVisibility(View.GONE);
}
至于原因 - RecyclerView
正如其名称所暗示的那样 - 它会回收视图:-D因此,每个项目视图如果创建一次并放入ViewHolder
,您应该调整它为列表中的每个项目。
这意味着你不仅需要在其中放置状态,还要删除/隐藏任何设置为固化先前绑定的状态。