[英]Android studio : How do I retrieve specific data from Firebase?
[英]How do I retrieve this specific data from firebase into my android studio application listview?
我正在嘗試從google firebase檢索特定於每個登錄用戶的特定數據。基本上,我想要檢索的數據是用戶ID下列出的“字段”數據,但是在google firebase實時數據庫的單獨類中。 我希望能夠在我的應用程序的活動中的'listview'中顯示每個字段的數據,但每當我嘗試運行它時,應用程序就會關閉。
我已經嘗試在“用戶”類的引用下運行應用程序。但是這不起作用。我也嘗試在“字段”類下運行,但這也不起作用。
這是我的FarmActivity.java,我想要顯示字段數據的'listview'。
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) {
}
});
這是我的FieldInformation.java,我已經為FarmActivity指定了字符串
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;
}
}
你的適配器應該有一個列表,你的適配器應該有一個列表的構造函數。 你在FarmActivity中初始化你的適配器,然后刪除你的set adapter,然后在初始化adapter之后設置它,最后把adapter.notifydatasetchanged(); 你在哪里設置你的適配器。 隨意發布您的適配器,並幫助您解決它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.