2016-03-04 59 views
0

我的适配器代码不正确。下载完成后,我只是通过这个代码设置适配器新的数据:当加载的下载结束之后的第一时间数据上recycleview项目数据时滚动

brands = downloadedBrands(); 
adapter.setData(brands); 
adapter.notifyDataSetChanged(); 

一切正常。但是当我向下滚动recycleview并再次向上滚动时,每个项目的数据现在都是错误的,所有文本视图tvCount已经消失。我不知道为什么。

我的代码有问题吗?

回答

0

设置非零计数时,请使tvCount可见。

if (count > 0) { 
     holder.tvCount.setText("" + count); 
     holder.tvCount.setVisibility(View.VISIBLE); 
    } else { 
     holder.tvCount.setVisibility(View.GONE); 
    } 

看看是否有帮助。

0

格林罗博的回答是正确的,但这里是一个解释为什么你有这个问题。

您假定您的视图始终设置为您的onBindViewHolder方法中的默认值。

RecyclerView重新使用已滚动屏幕的视图,因此您绑定的视图可能以前已被使用过(并已更改)。

onBindViewHolder方法应该总是设置一切。即将所有视图重置为您想要的确切值,并且不要假设因为您将项目默认为可见,它将始终如此。

+0

我明白了,您的解释正是如此。非常感谢。 – CauCuKien

0

您告诉如果count小于0,隐藏视图。如果count大于零将会怎样?您没有再次使视图可见。因此,只要在条件如下的情况下进行以下更改:

if (count > 0) { 
     holder.tvCount.setText("" + count); 
     holder.tvCount.setVisibility(View.VISIBLE);   
} else { 
     holder.tvCount.setVisibility(View.GONE); 
} 
+0

谢谢你的解释。您的回答与@greenrobo相同。它运作良好。 – CauCuKien

相关问题