在GridView中重复Scroll上的行

时间:2015-07-10 10:31:26

标签: android gridview

我有一个gridView,gridView中的数据来自服务器。 现在我在其中有一些视图将显示某些行,并且不会显示某些行取决于服务器条件。

例如:我有一个拥有imageView和2个TextView的LinearLayout,这个布局只对基于服务器数据的某些行可见。

第一次它很好但是当我向下/向上滚动时,行的视图会发生变化。

对于Ex:就像在第一行中如果我没有这个LinearLayout并且在第2行或第3行中这个布局是可见的,当我向下滚动然后再向上滚动时,第一行也得到那个布局完全相同最后一个滚动位置。

我正在使用Holder模式,请你在这里帮助我,我被困在这里。

非常感谢你。

1 个答案:

答案 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数据方法的基类为每种视图类型创建一个不同的。