Проверьте, существуют ли данные в модели классов в базе данных реального времени firebase, используя для каждого цикла - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь отобразить список файлов из базы данных Firebase в реальном времени, но я хочу проверить, не существует ли файл в базе данных, поэтому я могу отобразить текстовое представление с текстом, указывающим пользователю, что в базе данных еще нет файлов.

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

public void displayDocuments(){

    // display progressbar
    progressBar.setVisibility(View.VISIBLE);

    dBRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            // clear list
            archivedDocumentsList.clear();

            for(DataSnapshot snapshot: dataSnapshot.getChildren()){

                Documents documents = snapshot.getValue(Documents.class);

                if(documents == null){
                    // hides the recyclerView and displays the textView
                    recyclerView.setVisibility(View.GONE);

                    // sets visibility to visible
                    tv_no_archived_document.setVisibility(View.VISIBLE);

                }
                else {
                    // hides the textView and displays the recyclerView
                    tv_no_archived_document.setVisibility(View.GONE);

                    // sets visibility to visible
                    recyclerView.setVisibility(View.VISIBLE);

                    // adds to list
                    archivedDocumentsList.add(archivedDocuments);
                }

            }


            /*if(!dataSnapshot.exists()){
                // hides the recyclerView and displays the textView
                recyclerView.setVisibility(View.GONE);

                // sets visibility to visible
                tv_no_archived_document.setVisibility(View.VISIBLE);

            }
            */

            // notify adapter of changes
            adapterArchivedDocuments.notifyDataSetChanged();

            // hides progressbar
            progressBar.setVisibility(View.GONE);

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

            // hides progressbar
            progressBar.setVisibility(View.GONE);

            // display Error message
            Snackbar.make(constraintLayout,databaseError.getMessage(),Snackbar.LENGTH_LONG).show();
        }
    });

}

1 Ответ

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

Чтобы проверить, существует ли что-то по вашей ссылке, вы можете использовать это

 dBRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){ 
            //Data exists at your reference
              }else{
                //Data does not exists at the reference you are pointing out
               }

Чтобы проверить, есть ли в этой ссылке более 0 детей, вы можете использовать getChildrenCount();

dBRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists()){ 
                //Data exists at your reference
                  if(dataSnapshot.getChildrenCount() > 0 )
                       //There is 1 or more childs inside that reference
                          else
                          //There is no childs inside that reference

                  }else{
                    //Data does not exists at the reference you are pointing out
                   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...