添加图像时,RecyclerView滞后于GridViewAdapter

时间:2016-03-29 05:51:30

标签: android gridview android-recyclerview

编辑:没有实现我的GridViewAdapter扩展ArrayAdapter

我有一个RecyclerView,我将图像添加到ArrayList中,并在完成后调用adapter.notifyDataSetChanged();。当我在异步添加图像的同时进行滚动时,它会稍微滞后。

我有一个" GridViewAdapter"扩展一个ArrayAdapter,我也将图像添加到ArrayList中,然后直接在图像持有者上调用ArrayAdapter.add()。当异步添加图像时,它不会滞后。

编辑2:我的RecyclerView实现实际上是在arraylist中预先存在的位置使用set(并替换旧数据)。 我的GridVIew实现在arraylist上使用add(并添加了全新的数据)。我只是查看了arraylist的大复杂性 - 添加O(1)和搜索O(n)(替换项目)。这会与滞后有什么关系吗?

如何制作它以便RecyclerView不会滞后一点点?

2 个答案:

答案 0 :(得分:0)

您是否考虑过缩小物品的尺寸?如同不加载所有项目而只加载一个子集。负载10 - >用户到达底部 - >再装10个。

答案 1 :(得分:0)

在OnBindViewHolder方法中尝试此操作。

boolean flag = false;
//Get url of the photo  saved in model
 String src = list.get(position).ImageUrl;  
//Get the tag associated with it
 String newSrc = (String) holder.ivPlayerImage.getTag();
 // if both equal set flag true    
 if(newSrc.equals(src)){
                flag  =true;
            }
            else{
                flag = false;
            }
// if flag not true, meaning image url has changed for particular entry , and so u load again otherwise no need to load again(This will reduce flickering)
   if(!flag) {
            //load imageurl in the imageview
            holder.ivPlayerImage.setTag(src);
        }

希望有所帮助