从 Firebase 向 ListView 添加条目

Posted

技术标签:

【中文标题】从 Firebase 向 ListView 添加条目【英文标题】:add entry to ListView from Firebase 【发布时间】:2021-03-05 04:27:10 【问题描述】:

早上好,

我正在尝试从 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);

有人有想法吗?

最好的问候 安卓初学者

【问题讨论】:

【参考方案1】:

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

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

您可以在以下帖子的回答中看到一个工作示例:

What miss, with connect Firestore and ListView for random results in sample?

【讨论】:

以上是关于从 Firebase 向 ListView 添加条目的主要内容,如果未能解决你的问题,请参考以下文章

搜索数据名​​称 Firebase listview android

使用 firebase 在 listview 中显示所有用户图像

添加数据时,Firebase 列表视图未实时显示

我需要从后台线程访问listview的适配器

从 firebase 读取数据,并在 listview 中填充

从 firebase 检索数据后获取空白 ListView