[英]How to fetch data from firebase realtime database and display it on spinner
您好,我已将值保存在 firebase 实时数据库中。 但我现在想获取它并在微调器中显示它。 看到这张数据库firebaseData的照片,有两个名为 Jokes 和 Shayari 的数据库......它们里面有子类别。 我希望每当用户在 textview 中输入笑话时,笑话数据库的所有子类别都应显示在微调器中,当他进入 Shayari 时,所有 Shayari 的子类别都应显示在微调器中。 请告诉我如何根据条件获取它并在微调器中显示它们。
我将数据存储在 firebase 中的代码。
private void addSubCategory() {
String subcategory = editText.getText().toString().trim();
String parentcategory = spinner.getSelectedItem().toString();
if(parentcategory.equals("Jokes")){
String id = databaseJokes.push().getKey();
SubModel subModel= new SubModel(id, parentcategory, subcategory);
databaseJokes.child(id).setValue(subModel);
Toast.makeText(this, "Jokes Subcategory added", Toast.LENGTH_SHORT).show();
editText.getText().clear();
}
else if(parentcategory.equals("Shayari")){
String id = databaseJokes.push().getKey();
SubModel subModel= new SubModel(id, parentcategory, subcategory);
databaseShayari.child(id).setValue(subModel);
Toast.makeText(this, "Shayari Subcategory added", Toast.LENGTH_SHORT).show();
editText.getText().clear();
}
else if(!TextUtils.isEmpty(subcategory)){
Toast.makeText(this, "Please enter Sub Category", Toast.LENGTH_SHORT).show();
}
}
这是我的模型类代码:
public class SubModel {
String categoryId;
String parentcategory;
String subcategory;
public SubModel(){
}
public SubModel(String categoryId, String parentcategory, String subcategory) {
this.categoryId = categoryId;
this.parentcategory = parentcategory;
this.subcategory = subcategory;
}
public String getCategoryId() {
return categoryId;
}
public String getParentcategory() {
return parentcategory;
}
public String getSubcategory() {
return subcategory;
}
}
请告诉如何获取它们。
首先,告诉用户他们的子类别被添加的方式需要一些改进。
代替:
databaseShayari.child(id).setValue(subModel);
Toast.makeText(this, "Shayari Subcategory added", Toast.LENGTH_SHORT).show();
尝试使用:
databaseShayari.child(id).setValue(subModel).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Toast.makeText(this, "Shayari Subcategory added", Toast.LENGTH_SHORT).show();
}
});
通过这种方式,您可以确保仅当数据添加成功时才会显示消息。
其次,为了在您的微调器中显示来自 DB 的数据,我创建了一个简单的 function 执行此操作:
public void setSpinnerDataFromDB(DatabaseReference mRef, final Context context, final Spinner spinner) {
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final List<String> listCategoryId = new ArrayList<String>();
for (DataSnapshot snap : dataSnapshot.getChildren()) {
String categoryId = snap.child(context.getString(R.string.depart_name_fire_emp)).getValue(String.class);
listCategoryId.add(categoryId);
}
ArrayAdapter<String> departsAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, listCategoryId);
departsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(departsAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
然后调用它:
setSpinnerDataFromDB(mRef, this, mSpinner);
希望对你有帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.