Java 从Firebase检索ArrayList并在ListView中显示它

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

我正在使用Firebase为我在Android中制作的应用程序存储信息

目前,我拥有从Firebase检索对象并填充这些对象的listView的功能。但是,当我下订单时,我会创建这些对象的ArrayList并以这种方式保存它。因此,当我尝试检索和显示订单时,我得到一个错误,即无法将ArrayList转换为Object类型

以下是检索和显示的代码:

 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分钟内发布代码。先生,您太客气了。我真的很感谢你的帮助!我用我的变量/适配器等改变了它,成功了!!谢谢你的帮助!