今天使用RecycleView 来实现来展示一个列表,突然发现刷新的时候上一个列表的显示还在,看了打印数据已经更新了,只是有一些项的显示还没有更新,还保存着上一个状态,于是就出现了数据错乱的现象,有一部分是更新之后的状态,一部分是更新之前的状态。有问题就是找度娘啊,经过一番百度解决了,下面是别人提供的几种方法。
(1)在绑定adapter给RecycleView之前,设定adapter的stableIds为true。
adapter.setHasStableIds(true);
recyclerView.setAdapter(adapter);
其次,在adapter中,需要重写getItemId和getItemViewType
方法。
@Overridepublic long getItemId(int position)
{ return position;}
public int getItemViewType(int position) { return position; }
(2)之前我加载图片时用的是setImageResources,听人说换个图片加载器好一点,比如Glide,Picasso会提升性能。
(3)ImageView的默认图片不能在xml文件里设置!必须在Adapter里的onBindViewHolder方法里设置!(这个方法测试成功,)