Как показать несколько изображений один за другим цикл for из Firebase - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу разработать приложение, в котором оно берет строку и конвертирует ее в массив слов, что я уже сделал.Но проблема в том, что я использую for loop и запрос Firebase, чтобы показать Image из хранилища firebase один за другим по thread.sleep (5000); это не работает.Это всегда показывает только последнее слово, а также последнее слово.

Вот мой код:

                String str=matches.get(0).toLowerCase();

                final String[] word=str.split(" ");

                //speexhTxt.setText(word.length);

                // speexhTxt.setText(String.valueOf(one));

                for (i=0;i<word.length;i++) {
                    progressBar.setVisibility(View.VISIBLE);

                    imageHide.setVisibility(View.GONE);
                    signImage.setVisibility(View.VISIBLE);

                    firebaseFirestore= FirebaseFirestore.getInstance();
                    collectionReference=firebaseFirestore.collection("dumbsign");


                    Query query=collectionReference.whereEqualTo("word",word[i]);


                    final int finalI = i;
                    query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<QuerySnapshot> task) {

                            if (task.isSuccessful()){

                                for (QueryDocumentSnapshot doc : task.getResult()){


                                    Glide.with(getApplicationContext()).
                                            load(doc.getString("image_url"))
                                            .into(signImage);
                                    speexhTxt.setText(word[finalI]);

                                    progressBar.setVisibility(View.GONE);

                                }
                            };

                            try {
                                Thread.sleep(5000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }


                    });




                }

1 Ответ

0 голосов
/ 17 апреля 2019

Вы помещаете свой thread.sleep () после завершения цикла, поэтому в основном ваш код загружает все изображения и затем спит поток в течение 5000 миллисекунд, вы должны поместить его в цикл for, здесьнапример:

for (QueryDocumentSnapshot doc : task.getResult()){


          Glide.with(getApplicationContext()).
          load(doc.getString("image_url")).into(signImage);
          speexhTxt.setText(word[finalI]);
          progressBar.setVisibility(View.GONE);
          try {
             Thread.sleep(5000);
          } catch (InterruptedException e) {
              e.printStackTrace();
          }

}

Обратите внимание, я НЕ рекомендую использовать Thread.sleep () в своей основной теме. Прочитайте это: Как вызвать метод после задержки в Android

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