У меня есть один готовый arraylist (String), который содержит веб-ссылку на некоторые изображения. Теперь я хочу периодически обновлять вид изображения через некоторый интервал (скажем, 4 секунды) с помощью ссылок на изображение, используя Glide.
Я сталкиваюсь с проблемой установки паузы перед обновлением изображения с новым изображением.
Мой код:
//i is the count initially set to 0. StringLink is the arraylist
//StatusImage is the imageview
//first I set the first link from StringLink to StatusImage
Glide.with(ShowStatusPostActivity.this).setDefaultRequestOptions(placeholderRequest).load(StringLink.get(i)).into(StatusImage);
//next I try to set the next links from StringLink to StatusImage
//I try to keep one image for 4 seconds and then change it. Here I use Handler to do so
for(; i< StringLink.size();i++ )
{
try{
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
StatusImage.post(new Runnable() {
@Override
public void run() {
Glide.with(ShowStatusPostActivity.this).setDefaultRequestOptions(placeholderRequest).load(StringLink.get(i))
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(StatusImage);
}
});
}
}, 4000);
}
catch (Exception e){}
}
Но я получаю ошибку ArrayIndexOutofBound во втором Glide.
Я не думаю, что Handler внутри цикла for - это очень хорошая идея для создания периодической природы, я также пробовал Thread.sleep, но он тоже не работал.
Есть ли что-нибудь, что я могу сделать здесь?