应用程序不显示数据,几秒钟后崩溃

时间:2019-06-07 06:55:22

标签: android firebase firebase-realtime-database android-listview

我是使用Firebase数据库进行android开发的初学者。 我正在尝试从Firebase实时数据库获取数据并将其存储到ListView。 但是,当我运行该应用程序时,它会启动,但是没有数据,几秒钟后它就会崩溃。 你能建议我哪里错了吗?

我已经在Java文件中尝试过这种代码。 并且下面显示的代码在mainactivity类中,没有任何类型的导入或拼写错误。

private FirebaseDatabase fbdatabase;
     private DatabaseReference dbref;
     private ListView lstvwdata;
     private ArrayList<String> alist = new ArrayList<>();
     private ArrayAdapter<String> aadapt;
     String ad_lst_val;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         fbdatabase =FirebaseDatabase.getInstance("https://lstdatafetch.firebaseio.com/");
         dbref = fbdatabase.getReference("Orders");
         lstvwdata =(ListView)findViewById(R.id.lstview);
         final ArrayAdapter<String> aadapt = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,alist);
         lstvwdata.setAdapter(aadapt);
         dbref.addChildEventListener(new ChildEventListener() {
             @Override
             public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                 ad_lst_val = dataSnapshot.getValue(String.class);
                 alist.add(ad_lst_val);
                 aadapt.notifyDataSetChanged();
             }

             @Override
             public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

             }

             @Override
             public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

             }

             @Override
             public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

             }

            @Override
             public void onCancelled(@NonNull DatabaseError databaseError) {

             }
         }); }

我只想获取数据并放入列表视图。

1 个答案:

答案 0 :(得分:0)

如果要显示Firebase数据中的订单列表,请在我的应用程序中使用addValueEventListener。

ArrayList<String> ordersList = new ArrayList<>();

databaseRef.child("Orders").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ordersList.clear();
        for (DataSnapshot data : dataSnapshot.getChildren()){
            ordersList.add(data.getKey);
        }

        //Update Your Adapter here

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.w(TAG, "getUser:onCancelled", databaseError.toException());
        // ...
    }
});