关于recyclerview的item里面有下载进度条的操作

关于recyclerview的使用比较简单,这里讲下recyclerview的item有个更新下载进度百分比的textview。我们要解决两个问题:1、这个跟新百分比的textview的局部刷新;2、recyclerview滑动时的复用问题。


先贴上recyclerview的adapter的三个重要方法:

@Override

publicRecyclerView.ViewHolderonCreateViewHolder(ViewGroup parent, intviewType) {}

创建viewholder的方法,关于viewholder的个数是一个屏幕能放下tiem总数量+2;

@Override

public voidonBindViewHolder(RecyclerView.ViewHolder holder, final intposition) {}

item条目可见时,调用此方法,我们需要给holder里面的各个view设置数据和状态;

@Override

public intgetItemCount() {}

item的总数量


先说进度条的单独刷新:我们需要拿到该条目的view,view绑定在holder上面。可通过下面这个api拿到position对应的holder

publicViewHolderfindViewHolderForAdapterPosition(intposition) {}

拿到holder后,就可以刷新对应positon的进度条了


上面进度条可以单独刷新,如果一滑动,就会看到很揪心的结果,复用错乱。不该更新的更新了,原有更新的突然没了。这个也可以理解,人家就只创建了这么多holder,我们拿到的holder鬼知道是哪个。最后想了个方法,如果我们一个item一个holder应该能解决这个复用问题(不过这样牺牲了性能)。最后通过这个方法

@Override

public intgetItemViewType(intposition) {return  position;}

这样实现一个item一个holder。(ps:这里滑动的时候,需要有一个集合储存对应id的进度,并且在绑定数据时,展示)


以上是自己的想法,写了个demo好像不错,欢迎各位留下自己的意见或者建议。

当然还有其他的方法:比如定时刷新单个item,或者干脆整个页面一起刷新。

你可能感兴趣的:(关于recyclerview的item里面有下载进度条的操作)