Извлечение данных из Firebase и вывод в текстовом виде - PullRequest
0 голосов
/ 19 февраля 2020

Мне нужна помощь с моим android Проектом. Я пытаюсь создать форум Android («студенческое издание»), но мое отсутствие знаний меня настигает. У меня есть следующая структура базы данных Firebase: enter image description here

Мой Forum.class выглядит следующим образом:

Button post_btn,fetch;
EditText message;
DatabaseReference forum1, comments;
TextView  post_update;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_forum);

    post_btn = findViewById(R.id.post_btn);
    message = findViewById(R.id.comment_area);
    fetch=findViewById(R.id.btnFetch);
    post_update=findViewById(R.id.tvValue);
    final String post_title = "Student " + Session.LiveSession.user.getFn() + " " + Session.LiveSession.user.getSn() + " says: ";


    forum1 = FirebaseDatabase.getInstance().getReference("_forum1_");

    post_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          ;
            Message comment = new Message( post_title,message.getText().toString());
            forum1.child(forum1.push().getKey()).setValue(comment);



        }
    });


    fetch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            forum1.child("_forum1_").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String value = dataSnapshot.getValue(String.class);
                    post_update.setText(value);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
        }
    });

  }//end of onCreate
} //end of Class

pst_btn работает, и когда ученик публикует сообщения, Я помещаю sh данные из «message» вместе с «post_title» (ведьма создается в соответствии с пользователем) в Firebase.

Мне нужна помощь с моим методом "fetch". Я пытаюсь сделать кнопку, которая извлекает данные из firebase в "textview"

Мой вопрос: Как я могу разместить следующее в моем textview: "post_title" + "message" ??

Пример желаемого результата:

Студент Вилли Вайс говорит: ssss

Студент Вилли Вайс говорит: qqq

Студент Вилли Вайс говорит: dfsfsfsf

Может ли кто-нибудь один поможет мне с этим? У меня нет нулевых знаний о массивах или HashMaps, поэтому, если вы порекомендуете что-то подобное, оставьте пример кода, чтобы я мог узнать / выяснить, что вы рекомендуете.

Большое вам спасибо.

1 Ответ

2 голосов
/ 19 февраля 2020

Попробуйте выполнить следующее:

 fetch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                forum1.child("_forum1_").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                      for(DataSnapshot ds : dataSnapshot.getChildren()){
                        String msg = ds.child("message").getValue(String.class);
                        String value = ds.child("post_title").getValue(String.class);
                        post_update.setText(value +" "+ msg);
                     }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });
            }
        });

Выполните итерацию с помощью dataSnapshot.getChildren(), затем получите сообщение и post_title и передайте их setText()

...