在不同的片段中,ImageView的setVisibility有所不同

时间:2017-04-20 17:34:16

标签: android android-fragments

我正在开发的应用程序有一个标签视图,其中包含两个片段,每个片段在回收器视图中包含卡片视图 现在,卡片视图中有一个图像视图,我希望在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中可见。

1 个答案:

答案 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,您应该调整它为列表中的每个项目。

这意味着你不仅需要在其中放置状态,还要删除/隐藏任何设置为固化先前绑定的状态。