изменить ImageView, пока истина или в цикле if? - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь изменить свое изображение Просматривать каждую секунду, я думаю, что мой код правильный, но есть проблема с потоком или что-то вроде этого, потому что у меня черный экран, когда моя деятельность начинается

while(true)
{
    int min = 0;
    int max = 19;
    Random r = new Random();
    int rand = r.nextInt(max - min + 1) + min;
    String url = liste.getListe().get(rand).getImage();
    Picasso.get().load(url).into(imageView);

    try {
        Thread.sleep(1000);
    } catch(InterruptedException e) {
        System.out.println("got interrupted!");
    }
}

Кто-томожете мне помочь?

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Это потому, что вы блокируете Main Thread вашего приложения с помощью Thread.sleep(1000), а когда picasso хочет загрузить изображение в imageView, оно не может этого сделать, потому что основной поток обрабатывает представления и блокируется на этомвремя. Вы можете сделать это так:

Handler handler = new Handler();
private Runnable runnableCode = new Runnable() {
    @Override
    public void run() {
      int min = 0;
      int max = 19;
      Random r = new Random();
      int rand = r.nextInt(max - min + 1) + min;
      String url = liste.getListe().get(rand).getImage();
      Picasso.get().load(url).into(imageView);
      handler.postDelayed(this, 1000);
    }
};
handler.post(runnableCode);
0 голосов
/ 19 октября 2019

Должен ли liste.getListe (быть с e, а не просто list.getList ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...