【发布时间】:2019-04-16 14:40:52
【问题描述】:
我正在尝试从 google firebase 检索特定于每个登录用户的特定数据。基本上,我要检索的数据是用户 ID 下列出的“字段”数据,但在 google firebase 上的单独类中实时数据库。我希望能够在我的应用程序的活动中的“列表视图”中显示每个字段的数据,但是每当我尝试运行它时,应用程序就会关闭。
我已经尝试在“用户”类的引用下运行应用程序。但这不起作用。我也尝试在“字段”类下运行,但这也不起作用。
这是我的 FarmActivity.java,我希望在其中显示字段数据的“列表视图”。
public class FarmActivity extends AppCompatActivity {
ListView listView;
FirebaseDatabase database;
DatabaseReference ref;
ArrayList<String> list;
ArrayAdapter<String> adapter;
FieldInformation fieldInformation;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_farm);
listView = (ListView )findViewById(R.id.listView);
database = FirebaseDatabase.getInstance();
ref = database.getReference("Fields");
list = new ArrayList<>();
adapter = new ArrayAdapter<String>(this, R.layout.user_field_info, R.id.userInfo, list);
fieldInformation = new FieldInformation();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds:dataSnapshot.getChildren()){
fieldInformation = ds.getValue(FieldInformation.class);
list.add(fieldInformation.getFieldName().toString() + " " + "\n"+ fieldInformation.getCrop().toString() + " ");
}
listView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这是我为 FarmActivity 指定字符串的 FieldInformation.java
public class FieldInformation {
public String crop;
public String fieldName;
public FieldInformation(String crop, String fieldName) {
this.crop = crop;
this.fieldName = fieldName;
}
public FieldInformation(){
}
public String getCrop() {
return crop;
}
public void setCrop(String crop) {
this.crop = crop;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
}
【问题讨论】:
-
如果应用程序崩溃,会有一个堆栈跟踪。请在 logcat 上查找,并将其添加到您的问题中。请同时添加您的数据库结构。
标签: android firebase firebase-realtime-database firebase-authentication