我有一个gridView,gridView中的数据来自服务器。 现在我在其中有一些视图将显示某些行,并且不会显示某些行取决于服务器条件。
例如:我有一个拥有imageView和2个TextView的LinearLayout,这个布局只对基于服务器数据的某些行可见。
第一次它很好但是当我向下/向上滚动时,行的视图会发生变化。
对于Ex:就像在第一行中如果我没有这个LinearLayout并且在第2行或第3行中这个布局是可见的,当我向下滚动然后再向上滚动时,第一行也得到那个布局完全相同最后一个滚动位置。
我正在使用Holder模式,请你在这里帮助我,我被困在这里。
非常感谢你。
答案 0 :(得分:0)
视图是无状态的,所以如果你在某些视图上显示线性布局,你需要记住为其他视图隐藏它。
onBindViewHolder不会为您提供xml的全新视图,而是您突变的视图。基本上只记得将LinearLayout设置回去。
更好的方法是使用多个xml文件并实现getItemViewType显示和隐藏视图会导致滚动到gitter,但如果高度保持不变,则可能会使用它。
var req = {
method: 'POST',
url: url,
headers: {
'Content-Type': "application/json",
},
data: data,
transformRequest: function(data, headersGetter) {
var formData = new FormData();
angular.forEach(data, function(value, key) {
formData.append(key, value);
});
var headers = headersGetter();
delete headers['Content-Type'];
return formData;
}
}
$http(req)
.success(function(response) {
$scope.Models = response;
})
.error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
alert(data);
});
这是如何完成的基本示例。需要实现自己的ViewHolders我建议从具有set数据方法的基类为每种视图类型创建一个不同的。