recyclerView无限自动滑动
2019-07-27 本文已影响0人
leap_
public class RewardRecyclerView extends RecyclerView {
public RewardRecyclerView(Context context) {
super(context);
}
public RewardRecyclerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
task = new AutoPollTask(this);
}
public RewardRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
private static final long TIME = 16;
private AutoPollTask task;
static class AutoPollTask implements Runnable{
private final WeakReference<RewardRecyclerView> mReference;
//使用弱引用持有外部类引用->防止内存泄漏
public AutoPollTask(RewardRecyclerView reference) {
this.mReference = new WeakReference<RewardRecyclerView>(reference);
}
@Override
public void run() {
RewardRecyclerView recyclerView = mReference.get();
if (recyclerView != null ) {
recyclerView.scrollBy(2, 2);
recyclerView.postDelayed(recyclerView.task, TIME);
}
}
}
public void start(){
postDelayed(task,TIME);
}
public void stop(){
removeCallbacks(task);
}
}
public class RewardNameAdapter extends BaseAdapter<RobotRewardName> {
private int num = 0;
@Override
protected BaseViewHolder createViewHolder(Context context, ViewGroup parent) {
return new RewardNameHolder(context,parent);
}
@Override
public int getItemCount() {
num = super.getItemCount();
return Integer.MAX_VALUE;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
position = position%num;
super.onBindViewHolder(holder, position);
}
}