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);
    }
}

上一篇下一篇

猜你喜欢

热点阅读