从firebase向listview添加条目

wr98u20j  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(374)

早上好,
我正在尝试从firestore获取数据并将其添加到我的listview中。不幸的是,它不工作,我不知道为什么。代码会运行,但不会向我的listview添加任何条目。我的代码如下所示:

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);

有人有主意吗?
致以最诚挚的问候

w6lpcovy

w6lpcovy1#

您正在从数据库中获取结果,您正在将它们添加到列表中,但不通知适配器。这就是全部的想法,你得到的项目,并通知适配器之后。因此,我们只需添加以下代码行:

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();
                }
            }
        });

你可以在下面的帖子中看到我的答案中的一个工作示例:
什么遗漏,与连接firestore和listview的随机结果在样本?

相关问题