Java 从Firebase检索ArrayList并在ListView中显示它
我正在使用Firebase为我在Android中制作的应用程序存储信息 目前,我拥有从Firebase检索对象并填充这些对象的listView的功能。但是,当我下订单时,我会创建这些对象的ArrayList并以这种方式保存它。因此,当我尝试检索和显示订单时,我得到一个错误,即无法将ArrayList转换为Object类型 以下是检索和显示的代码:Java 从Firebase检索ArrayList并在ListView中显示它,java,android,firebase,listview,arraylist,Java,Android,Firebase,Listview,Arraylist,我正在使用Firebase为我在Android中制作的应用程序存储信息 目前,我拥有从Firebase检索对象并填充这些对象的listView的功能。但是,当我下订单时,我会创建这些对象的ArrayList并以这种方式保存它。因此,当我尝试检索和显示订单时,我得到一个错误,即无法将ArrayList转换为Object类型 以下是检索和显示的代码: public void onDataChange(DataSnapshot dataSnapshot) { for (Dat
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Object object = ds.getValue(Object.class);
orders.add(object);
list.setAdapter(adapter);
}
}
这里我们有orders是ArrayList,object是我的object类的一个实例。在应用程序的另一个区域中,当它检索数据库中的所有项并填充提要时,我的代码工作正常,但这些项将作为单个项存储在数据库中,而不是作为项数组存储
如何从数据库中检索ArrayList,然后访问该ArrayList中的特定项?如果您想从应用程序的任何其他区域获取代码,只需提问,我将编辑/更新我的问题以包含该代码。感谢您的POJO示例:
public class BookList {
private String bookName; // Add fields according to your needs \\
public BookList(){
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
}
获取书籍详细信息的方法:
private void fetchBookList() {
progressDialog();
//---Your Reference to the bookList---\\
DatabaseReference dbRefQuoteRequestList = firebaseDatabase.getReference("All_Orders").child("Anthony Hopkins")
.child("orders").child("bookList");
dbRefQuoteRequestList.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
@Override
public void onDataChange(final com.google.firebase.database.DataSnapshot dataSnapshot) {
quoteRequestListArrayList.clear(); // ArrayList<Pojo/Object> \\
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
String bookName = postSnapshot.child("bookName").getValue(String.class);
//Use the dataType you are using and also use the reference of those childs inside arrays\\
// Putting Data into Getter Setter \\
BookList bookList = new BookList();
bookList.setbookName(bookName);
quoteRequestListArrayList.add(bookList);
}
if (quoteRequestListArrayList.size() == 0) {
StaticMethods.customSnackBar(quoteRequestLv, "Your alert!",
getResources().getColor(R.color.colorPrimaryDark),
getResources().getColor(R.color.color_white), 3000);
}
//---Initialize your adapter as you have fetched the data---\\
quoteRequestListAdapter = new QuoteRequestListAdapter(QuoteRequestListActivity.this, quoteRequestListArrayList);
quoteRequestLv.setAdapter(quoteRequestListAdapter);
dismissDialog();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void fetchBookList(){
progressDialog();
//---你对书目的参考---\\
DatabaseReference dbRefQuoteRequestList=firebaseDatabase.getReference(“所有订单”).child(“安东尼·霍普金斯”)
.child(“订单”).child(“书单”);
dbRefQuoteRequestList.addValueEventListener(新的com.google.firebase.database.ValueEventListener(){
@凌驾
public void onDataChange(final com.google.firebase.database.database.DataSnapshot DataSnapshot){
QuoteRequestListaryList.clear();//ArrayList\\
对于(DataSnapshot postSnapshot:DataSnapshot.getChildren()){
String bookName=postSnapshot.child(“bookName”).getValue(String.class);
//使用您正在使用的数据类型,并在数组中使用这些子对象的引用\\
//将数据放入Getter Setter\\
BookList BookList=新建BookList();
书名:setbookName(书名);
QuoteRequestListaryList.add(图书列表);
}
如果(QuoteRequestListaryList.size()==0){
StaticMethods.customSnackBar(quoteRequestLv,“您的警报!”),
getResources().getColor(R.color.colorPrimaryDark),
getResources().getColor(R.color.color\u white),3000);
}
//---在获取数据时初始化适配器---\\
quoteRequestListAdapter=新的quoteRequestListAdapter(QuoteRequestListActivity.this,quoteRequestListArrayList);
quoteRequestLv.setAdapter(quoteRequestListAdapter);
dismissDialog();
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
根据您的需要更改名称,希望能有所帮助。能否显示firebase数据库的屏幕截图?我知道答案solution@RahulChandrabhan我在上面的问题中添加了一张照片,您想阅读哪个节点?因此我希望listView显示整个图书列表。0/1/2等表示按该顺序排列的书籍,因此它们应填充我的列表视图。我在5分钟内发布代码。先生,您太客气了。我真的很感谢你的帮助!我用我的变量/适配器等改变了它,成功了!!谢谢你的帮助!