簡體   English   中英

如何從 Firebase 中的推送數據中獲取價值?

[英]How to get value from pushed data in Firebase?

在我的 firebase 中,我存儲了問題及其答案。 每個答案都有一個 id,它來自 push()。 但我無法顯示已回答問題的所有用戶的列表。 請幫忙。

這是代碼:

ListView listView;
ArrayList<String> answerers = new ArrayList<>();
ArrayAdapter arrayAdapter;
String askedBy, question, likes;
FirebaseAuth mAuth;
DatabaseReference databaseReference;

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

    listView = findViewById(R.id.answersListView);
    Intent intent = getIntent();
    askedBy = intent.getStringExtra("askedBy");
    question = intent.getStringExtra("question");
    likes = intent.getStringExtra("numberOfLikes");
    mAuth = FirebaseAuth.getInstance();
    databaseReference = FirebaseDatabase.getInstance().getReference();

    databaseReference.child("questions").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()){
                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                    if (dataSnapshot.child("question").getValue().toString().equals(question) && dataSnapshot.child("askedBy").getValue().toString().equals(askedBy)
                            && dataSnapshot.child("likes").getValue().toString().equals(likes)) {
                            dataSnapshot.child("answers").getRef().addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot snapshots) {
                                    if (snapshots.exists()){
                                        for (DataSnapshot dataSnapshots : snapshots.getChildren()){
                                            String id = dataSnapshot.getRef().push().getKey();
                                            answerers.add(dataSnapshots.child(id).child("answeredBy").getValue().toString());
                                        }
                                    }
                                }

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

                                }
                            });
                        arrayAdapter = new ArrayAdapter<>(ViewAnswersActivity.this, android.R.layout.simple_list_item_1, answerers);
                        listView.setAdapter(arrayAdapter);
                    }
                }
            }
        }

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

        }
    });

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Intent intent1 = new Intent(ViewAnswersActivity.this, AnswerActivity.class);
            intent1.putExtra("askedBy", askedBy);
            intent1.putExtra("answeredBy", answerers.get(i));
            intent1.putExtra("question", question);
            intent1.putExtra("numberOfLikes", likes);
            startActivity(intent1);
        }
    });
}

這是firebase結構

當我運行該應用程序時,listView 為空,表示尚未存儲值。

嘗試在 onDataChange() 中設置適配器

      @Override
           public void onDataChange(@NonNull DataSnapshot snapshots) {
                if (snapshots.exists()){
                 for (DataSnapshot dataSnapshots : snapshots.getChildren()){
                  String id = dataSnapshot.getRef().push().getKey();                                     
     
 answerers.add(dataSnapshots.child(id).child("answeredBy").getValue().toString());
                                     }
                                    arrayAdapter = new ArrayAdapter<> (ViewAnswersActivity.this, android.R.layout.simple_list_item_1, answerers);
                                    listView.setAdapter(arrayAdapter);
                                                }
                                            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM