首页 > 解决方案 > 在回收器视图项中动态完成时视图不隐藏

问题描述

RecyclerView用来列出项目,并在每个单独的列表中显示一个Visible/Gone动态的图像。我View.GONE用来隐藏视图。

在图像应该隐藏的情况下并不总是有效。它仍然显示在屏幕上,并且在调试模式下我已经检查过了,当 image.getVisiblity() 它给我 int 值时"8",这意味着视图是 Gone,但我仍然可以在该列表中看到该图像。它只是偶尔发生。

我尝试使用View.INVISIBLE它,它一直在工作,但它占用了布局中的空间,这是预期的

sparseArray用来存储所有的holders classes。我在适配器中编写了一个方法并从活动中调用它。我试图隐藏replayIcon视图

public void handleReplayButton(int pos,Boolean isDisplay) {

   Holder holder = holderSparseArray.get(pos);

   if(holder != null) {
       if (isDisplay != null && isDisplay == true) {
           holder.playIcon.setVisibility(View.GONE);
           holder.pauseIcon.setVisibility(View.GONE);
           holder.replayIcon.setVisibility(View.VISIBLE);
       } else if(isDisplay != null && isDisplay == false) {
           holder.playIcon.setVisibility(View.VISIBLE);
           holder.pauseIcon.setVisibility(View.GONE);
           holder.replayIcon.setVisibility(View.GONE);
       } else {
           holder.playIcon.setVisibility(View.GONE);
           holder.pauseIcon.setVisibility(View.VISIBLE);
           holder.replayIcon.setVisibility(View.GONE);
       }
   }

}

这是else statement我想要的最后一个,它将视图设置为 GONE。当我调用holder.replayIcon.getVisibility()它时,它给了我 int 8 但是,我仍然可以看到图标

标签: android

解决方案


尝试在一个语句的末尾调用 invisible 使其可见,反之亦然。

或者

你也可以尝试把notifydatasetchanged()。


推荐阅读