recyclerview 利用Timer实现自动滚动

有篇文章是
listview 利用handler自动滚动到底部在从头开始循环滚动:
http://blog.csdn.net/qq_34900897/article/details/78732099
在魅族有问题,滑动到底部就无法跳到顶部:
以下用recyclerview实现就没有存在这些问题:
public class MainActivity extends AppCompatActivity {

    private RecyclerView list_v;
    private BaseRecyclerAdapter<String> adapter;
    private List<String> data = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list_v = findViewById(R.id.list_v);
        list_v.setLayoutManager(new GridLayoutManager(this, 1));
        list_v.setAdapter(adapter = new BaseRecyclerAdapter<String>(this, R.layout.test_item, data) {
            @Override
            public void bindData(SuperHolder holder, int position, String bean) {
                TextView tv = holder.getView(R.id.mass_tv);
                tv.setText(bean);
            }
        });
        for (int i = 0; i < 10; i++) {
            data.add("position: " + i);
        }
        adapter.notifyDataSetChanged();
    }

    private Timer t;

    public void click(View view) {
        switch (view.getId()) {
            case R.id.btn_go:
                if (t != null) {
                    t.cancel();
                }
                t = new Timer();
                t.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if (isSlideToBottom(list_v)) {
                                    list_v.scrollToPosition(0);
                                    return;
                                }
                                list_v.smoothScrollBy(0, dpToPx(50), new LinearInterpolator());
                            }
                        });
                    }
                }, 500, 1000);
                break;
            case R.id.btn_stop:
                if (t != null)
                    t.cancel();
                break;
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (t != null)
            t.cancel();
}


 public static boolean isSlideToBottom(RecyclerView recyclerView) {
        if (recyclerView == null) return false;
        if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() >= recyclerView.computeVerticalScrollRange())
            return true;
        return false;
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值