从 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:
中看到我的回答中的一个有效示例
早上好,
我正在尝试从 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:
中看到我的回答中的一个有效示例