近期项目中有个九宫图的功能,于是采用了RecyclerView,实现功能并没有太大的难度,获取数据,指定GridLayoutManager,代码就不上了,关键的问题在于数据填充完毕后,更换图片,会出现几张空白的位置,而且是在固定的位置,数据跟踪发现setImageBitmap(null)确实执行了,而且数据填充上去了,但是显示出来就是空白的。
后来想到之前看过的博客关于RecycleView缓存的问题,调整了一下代码如下!
recyclerView.addItemDecoration(new SpacesItemDecoration(10));
recyclerView.setLayoutManager(new GridLayoutManager(mContext, 4));
adapter = new FriendPublishRecyclerAdapter(mContext, imgPath);
RecyclerView.RecycledViewPool pool =recyclerView.getRecycledViewPool();
pool.setMaxRecycledViews(0,10);
recyclerView.setRecycledViewPool(pool);
recyclerView.setAdapter(adapter);
(如果不去手动设置RecycledViewPool 会默认创建一个。)
结果问题解决了,至于为啥会在固定位置出现空白位置,暂时没法解释,会探查这个问题,