gpt4 book ai didi

java - 从Firebase检索数据但无法在listView中显示它

转载 作者:行者123 更新时间:2023-12-01 11:24:22 24 4
gpt4 key购买 nike

这是我从 firebase 获取数据的方法,但问题是数据很多,这就是为什么它需要很长时间并且没有返回列表......

public List<Message> retrieveDataFromDatabase() {
final List<Message> msg = new ArrayList<>();
Firebase itemsTodo = fb.child("Incomplete");
itemsTodo.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

for (DataSnapshot children : dataSnapshot.getChildren()) {
for (DataSnapshot child : children.getChildren()) {
Map<String, Object> mapMsg = (Map<String, Object>) child.getValue();
boolean isRead = (Boolean) mapMsg.get("read");
String message = (String) mapMsg.get("sender");
String title = (String) mapMsg.get("title");
msg.add(new Message(title, message, isRead));
}
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {

}
});Log.d("Moosa", "Size From Database is "+msg.size());
return msg;
}`

还有显示 ListView 的方法,我从中调用上述方法...

 public void refreshListItems() {
Log.d("Moosa", "Invoke Refresh Method");
AsyncTask<Void,Void,List<Message>> refresh=new AsyncTask<Void, Void, List<Message>>() {
@Override
protected List<Message> doInBackground(Void... params) {
List<Message> msg=db.retrieveDataFromDatabase();
Log.d("Moosa", "Size is "+msg.size());

return msg;

}

@Override
protected void onPostExecute(List<Message> messages) {
Log.d("Moosa", "OnPostExecution Start.......");

super.onPostExecute(messages);
final ListView list = (ListView) findViewById(R.id.emailList);
final MessageAdapter msgadptr = new MessageAdapter(MainActivity.this, messages);
list.setAdapter(msgadptr);
Log.d("Moosa", "OnPostExecuted.......");


}
};
refresh.execute();
Log.d("Moosa", "Refreshing List...");
}

日志--->
Moosa:调用刷新方法
Moosa:刷新列表...
穆萨:尺寸为 0
Moosa:OnPostExecution开始.......
Moosa:OnPostExecuted.......
Moosa:数据库大小为 12

最佳答案

如果你清楚地观察你的logcat命令

首先,它打印列表大小 0,但在 onPostExcute(-) 之后,它返回列表大小为 12。这意味着您的 retrieveDataFromDatabase() 返回空列表,并且这Listener 正在后台加载数据,因此一旦加载完成,它就会打印列表大小为 12。

即在 onDataChange(-) 中,只有您可以将数据添加到适配器并将其设置为 ListView

希望这对您有帮助。

关于java - 从Firebase检索数据但无法在listView中显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30953814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com