从 Firebase 添加条目到 ListView

add entry to ListView from Firebase

早上好,

我正在尝试从 Firestore 获取数据并将其添加到我的列表视图中。不幸的是,它不起作用,我不确定为什么。代码运行但没有向我的列表视图添加任何条目。我的代码如下所示:

    public void createListViewcontent() {

        listView = findViewById(R.id.mylistview);
        final ArrayList<String> Listviewcontent= new ArrayList<String>();
        db.collection("ok")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {               

                            Listviewcontent.add(document.getId());
                            Toast.makeText(kk.this, document.getId() + " => " + document.getData(), Toast.LENGTH_SHORT).show();
                            Toast.makeText(kk.this, "weird", Toast.LENGTH_SHORT).show();
                            }
                        } else {
                            Toast.makeText(kk.this, "failure", Toast.LENGTH_SHORT).show();
                        }
                    }
                });


        ArrayAdapter<String> arrayAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,Listviewcontent);
        listView.setAdapter(arrayAdapter);

有人知道吗?

此致 android初学者

您正在从数据库获取结果,正在将它们添加到列表中,但是您没有通知适配器。这就是整个想法,你得到这些项目并在那之后立即通知适配器。所以应该简单地添加以下代码行:

arrayAdapter.notifydatasetchanged();

for 循环结束后:

db.collection("ok")
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {

                        Listviewcontent.add(document.getId());
                        Toast.makeText(kk.this, document.getId() + " => " + document.getData(), Toast.LENGTH_SHORT).show();
                        Toast.makeText(kk.this, "weird", Toast.LENGTH_SHORT).show();
                    }
                    arrayAdapter.notifydatasetchanged(); //Notify the adapter
                } else {
                    Toast.makeText(kk.this, "failure", Toast.LENGTH_SHORT).show();
                }
            }
        });

您可以从以下 post:

中看到我的回答中的一个有效示例