ViewPager 从 Firebase 数据库中的第一张图片到最后一张图片

ViewPager goes from first to very last image in Firebase database

我创建了一个应用程序,我将图像上传到 firebase,然后检索它们并在 viewpager 中显示它们。 我能够检索所有图像,但我的问题是,当在 viewpager 中时,它们从第一张图像到最后一张图像非常快(我看不到其他图像,我只看到第一张然后是最后一张)。

我曾尝试添加一个循环,该循环只是不断递增数字以延迟应用程序,但它没有用。 接下来我使用一个处理程序作为延迟器,但它没有用。 这是我的代码目前的样子 - 它在 TimerTask 中 class 因为 viewpager 会自动滑动,看起来很简单

    public class MyTimerTask extends TimerTask{
        @Override
        public void run() {
           menuSliderActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    int i=0;
                    while(i<sliderImg.size()){
                        while (viewPager.getCurrentItem()==i){
                            viewPager.setCurrentItem(i+1);
                            i++;
                        }
                    }
                    if (viewPager.getCurrentItem()==sliderImg.size()) {
                        viewPager.setCurrentItem(0);
                    }
                    }
            });
        }
    }

我也试过了:

 public class MyTimerTask extends TimerTask{
        @Override
        public void run() {
           menuSliderActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    int i=0;
                    while(i<=sliderImg.size()){
                        if(viewPager.getCurrentItem()==i){
                            viewPager.setCurrentItem(i+1);
                        } else if (viewPager.getCurrentItem()==sliderImg.size()) {
                            viewPager.setCurrentItem(0);
                         }
                        i++;
                    }
                    }
            });  
        }
    }

有谁知道我做错了什么? (我是 android studio 和 java 的新手,所以我使用的函数 -运行nable()、运行()...等可能是错误的。 谢谢你。

您应该使用 CountDownTimer 在 ViewPager 中循环播放图像。所以它会根据你的需要慢慢循环。

new CountDownTimer(30000, 1000) {

 public void onTick(long millisUntilFinished) {
     mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
 }

 public void onFinish() {
     mTextField.setText("done!");
 }

}.start();

这是link

https://developer.android.com/reference/android/os/CountDownTimer

你可以试试这个,它使用线程

DelayedTask.java

class DelayedTask extends Thread {
        private Activity activity;
        private int count;
        private int sleepDelay;
        private int totalDelay = 5000;

        public DelayedTask(Activity activity, int count) {
            this.activity = activity;
            this.count = count;
            this.sleepDelay = totalDelay / count;
        }


        @Override
        public void run() {
            for (int i = 0; i < count; i++) {
                try {
                    final int j = i;
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            viewPager.setCurrentItem(j);
                        }
                    });
                    Thread.sleep(sleepDelay);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

当所有图片都下载完后使用这个

DelayedTask delayedTask = new DelayedTask(MainActivity.this, 10 /*no of images*/);
delayedTask.start();