繁体   English   中英

如何从 firebase 实时数据库中获取数据并在微调器上显示

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM