编辑:没有实现我的GridViewAdapter扩展ArrayAdapter
我有一个RecyclerView,我将图像添加到ArrayList中,并在完成后调用adapter.notifyDataSetChanged();
。当我在异步添加图像的同时进行滚动时,它会稍微滞后。
我有一个" GridViewAdapter"扩展一个ArrayAdapter,我也将图像添加到ArrayList中,然后直接在图像持有者上调用ArrayAdapter.add()
。当异步添加图像时,它不会滞后。
编辑2:我的RecyclerView实现实际上是在arraylist中预先存在的位置使用set
(并替换旧数据)。
我的GridVIew实现在arraylist上使用add
(并添加了全新的数据)。我只是查看了arraylist的大复杂性 - 添加O(1)和搜索O(n)(替换项目)。这会与滞后有什么关系吗?
如何制作它以便RecyclerView不会滞后一点点?
答案 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);
}
希望有所帮助