我是使用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) {
}
}); }
我只想获取数据并放入列表视图。
答案 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());
// ...
}
});