java - 从firebase实时数据库读取数据

标签 java android firebase-realtime-database

enter image description here

我已经尝试了几个小时来读取产品分支中的 0 和 1。请在 firebase 数据库方面经验丰富的人帮助我:(

private void showData(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()){
        Food uInfo = new Food();
        uInfo.setName(ds.child("products").getValue(Food.class).getName()); 
        uInfo.setIngredients(ds.child("products").getValue(Food.class).getIngredients()); 
        //display all the information
        Log.d(TAG, "showData: name: " + uInfo.getName());
        Log.d(TAG, "showData: ingredients: " + uInfo.getIngredients());

        ArrayList<String> array  = new ArrayList<>();
        array.add(uInfo.getName());
        array.add(uInfo.getIngredients());
        [ArrayAdapter adapter = new][1] ArrayAdapter(this,android.R.layout.simple_list_item_1,array);
        mListView.setAdapter(adapter);
    }
}

最佳答案

你做错了。

首先,确保您的模型类 Food 包含您想要解析的所有字段。

    public class Food
{
    private String NDB_number;
    private String long_name;
    private String ingredients_english;

    public String getNDB_number() {
        return NDB_number;
    }

    public void setNDB_number(String NDB_number) {
        this.NDB_number = NDB_number;
    }

    public String getLong_name() {
        return long_name;
    }

    public void setLong_name(String long_name) {
        this.long_name = long_name;
    }

    public String getIngredients_english() {
        return ingredients_english;
    }

    public void setIngredients_english(String ingredients_english) {
        this.ingredients_english = ingredients_english;
    }

    public Food(String NDB_number, String long_name, String ingredients_english)
    {
        this.long_name = long_name;
        this.NDB_number = NDB_number;
        this.ingredients_english = ingredients_english;

    }

}

那么你可以按如下方式解析产品

// Get a reference to our Products
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("foodnutrientstest").child("Products");

// Attach a listener to read the products
ref.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()){
    Food food = ds.getValue(Food.class);
    //display all the information
    Log.d(TAG, "showData: name: " + food.getLong_name());
    Log.d(TAG, "showData: ingredients: " + food.getIngredients_english());

    }
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    System.out.println("The read failed: " + databaseError.getCode());
  }
});

干杯:)

关于java - 从firebase实时数据库读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57487954/

相关文章:

java - 从 Android Studio 中的 Firebase 数据库读取对象

ios - 用户图像未从 Firebase 存储加载

swift - 如何检索节点的中间值

java - 替代 AEM 中已弃用的方法?

java - Xpages - java.lang.NoSuchMethodError : javax/mail/internet/MimeBodyPart. AttachFile(Ljava/io/File;)V

android - SVN android studio "Import into version control"=> "Import into subversion"选项未显示

java - Jni jintArray 参数错误

Java 类型安全转换问题

java - org.thymeleaf.exceptions.TemplateInputException : Error resolving fragment: template or fragment could not be resolved

java.lang.NumberFormatException : Invalid int: "3546504756", 这个错误是什么意思?