温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android如何实现自动轮询的RecycleView

发布时间:2021-09-27 11:31:06 来源:亿速云 阅读:132 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关Android如何实现自动轮询的RecycleView,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

需求:类似医院或者商场,大屏幕无限轮播item (广告词/广告图…),供大家参考,具体内容如下

代码如下

/** * Created by Xia_焱 on 2017/8/20. */public class AutoPollRecyclerView extends RecyclerView { private static final long TIME_AUTO_POLL = 32; AutoPollTask autoPollTask; private boolean running; //标示是否正在自动轮询 private boolean canRun;//标示是否可以自动轮询,可在不需要的是否置false public AutoPollRecyclerView(Context context, @Nullable AttributeSet attrs) {  super(context, attrs);  autoPollTask = new AutoPollTask(this); } static class AutoPollTask implements Runnable {  private final WeakReference<AutoPollRecyclerView> mReference;  //使用弱引用持有外部类引用->防止内存泄漏  public AutoPollTask(AutoPollRecyclerView reference) {   this.mReference = new WeakReference<AutoPollRecyclerView>(reference);  }  @Override  public void run() {   AutoPollRecyclerView recyclerView = mReference.get();   if (recyclerView != null && recyclerView.running &&recyclerView.canRun) {    recyclerView.scrollBy(2, 2);    recyclerView.postDelayed(recyclerView.autoPollTask,recyclerView.TIME_AUTO_POLL);   }  } } //开启:如果正在运行,先停止->再开启 public void start() {  if (running)   stop();  canRun = true;  running = true;  postDelayed(autoPollTask,TIME_AUTO_POLL); } public void stop(){  running = false;  removeCallbacks(autoPollTask); } @Override public boolean onTouchEvent(MotionEvent e) {  switch (e.getAction()){   case MotionEvent.ACTION_DOWN:    if (running)     stop();    break;   case MotionEvent.ACTION_UP:   case MotionEvent.ACTION_CANCEL:   case MotionEvent.ACTION_OUTSIDE:    if (canRun)     start();    break;  }  return super.onTouchEvent(e); }}

开启:如果正在运行,先停止->再开启

public void start() {  if (running)   stop();  canRun = true;  running = true;  postDelayed(autoPollTask,TIME_AUTO_POLL); } public void stop(){  running = false;  removeCallbacks(autoPollTask); } @Override public boolean onTouchEvent(MotionEvent e) {  switch (e.getAction()){   case MotionEvent.ACTION_DOWN:    if (running)     stop();    break;   case MotionEvent.ACTION_UP:   case MotionEvent.ACTION_CANCEL:   case MotionEvent.ACTION_OUTSIDE:    if (canRun)     start();    break;  }  return super.onTouchEvent(e); }}

Adapter中的代码如下

@Override public void onBindViewHolder(BaseViewHolder holder, int position) {  String data = mData.get(position%mData.size());  holder.setText(R.id.tv_content,data); } @Override public int getItemCount() {  return Integer.MAX_VALUE; }

Activity中的代码

mRecyclerView.setAdapter(adapter);  if (true) //保证itemCount的总个数宽度超过屏幕宽度->自己处理   mRecyclerView.start();

关于“Android如何实现自动轮询的RecycleView”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI