java - 我无法从 Firebase 检索我的数据

标签 java android firebase firebase-realtime-database

这是我的 Firebase 树:

package com.example.android.frep;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.content.Intent;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class fHome extends AppCompatActivity {

List<resepNusantara> listResepNusantara;
ListView listViewResep;

DatabaseReference dbResepNusantara;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_f_home);
    listViewResep = (ListView) findViewById(R.id.resepList);
    dbResepNusantara = FirebaseDatabase.getInstance().getReference("resepNusantara");
}


@Override
protected void onStart() {
    super.onStart();

    dbResepNusantara.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //clear the list
            //listResepNusantara.clear();

            //iterating all nodes
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                //getting resep
                //This is the ERROR START
                resepNusantara resepN = postSnapshot.getValue(resepNusantara.class);
                //adding resep to the list
                listResepNusantara.add(resepN);
            }

            //creating the adapter for the list
            ResepList resepListAdapter = new ResepList(fHome.this, listResepNusantara);
            //attaching adapter to the listView
            listViewResep.setAdapter(resepListAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

}

大家好,我想问一下,我在从 Firebase 检索数据时遇到问题

在我的模型类 resepNusantara 中,我尝试将属性类型更改为 Long 但仍然错误。错误行在注释中

我遵循以下准则:https://www.simplifiedcoding.net/firebase-realtime-database-crud/

这是 LogCat:

10-24 20:35:14.002 18631-18745/com.example.android.frep D/libc-netbsd: [getaddrinfo]:  hostname=frep-ffacb.firebaseio.com;  servname=(null);  app_pid=18631;  app_uid=10161;  ai_flags=1024;  ai_family=0; ai_socktype=1; netid=0; mark=0; from prox result 0
10-24 20:35:14.521 18631-18745/com.example.android.frep E/NativeCrypto: ssl=0x7f93ff4880 cert_verify_callback x509_store_ctx=0x7f6d5889f0 arg=0x0
10-24 20:35:15.610 18631-18631/com.example.android.frep E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.example.android.frep, PID: 18631
  com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Long to String
      at com.google.android.gms.internal.zzbqi.zzaD(Unknown Source)
      at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
      at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
      at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
      at com.google.android.gms.internal.zzbqi$zza.zze(Unknown Source)
      at com.google.android.gms.internal.zzbqi$zza.zzaG(Unknown Source)
      at com.google.android.gms.internal.zzbqi.zze(Unknown Source)
      at com.google.android.gms.internal.zzbqi.zzb(Unknown Source)
      at com.google.android.gms.internal.zzbqi.zza(Unknown Source)
      at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
      at com.example.android.frep.fHome$1.onDataChange(fHome.java:56)
      at com.google.android.gms.internal.zzbmz.zza(Unknown Source)
      at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source)
      at com.google.android.gms.internal.zzboc$1.run(Unknown Source)
      at android.os.Handler.handleCallback(Handler.java:815)
      at android.os.Handler.dispatchMessage(Handler.java:104)
      at android.os.Looper.loop(Looper.java:238)
      at android.app.ActivityThread.main(ActivityThread.java:6006)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:937)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:798)

最佳答案

编码(marshal) resepNusantara 类时存在数据类型不匹配。具体来说,其中一个成员在数据库中存储为long,在类中存储为string

将对象转储到控制台并检查数据库以确保类型全部同步。

请参阅此帖子了解更多信息:Firebase DatabaseException: Failed to convert value of type java.lang.Long to String

关于java - 我无法从 Firebase 检索我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46907025/

相关文章:

java - Autowiring 具有 @Configuration @EnableScheduling @Component 注释的 bean 组件时出错

java - Mapstruct 生成用于依赖注入(inject)的构造函数

java - gridview 中的图像在滚动时改变其位置

android - 如何根据列表项的位置从数据库中获取列表项单击的值

Android:如何让 ImageView 填满屏幕

Java 通过套接字发送屏幕截图

java - 为什么新线程立即操作UI时没有CalledFromWrongThreadException?

firebase - 从 Cloud Function : IAM Authentication 调用 Cloud Run

ios - Firebase Cloud Messaging - 检查现有或可用的主题

javascript - 我的 Angular 应用程序可以有两个 Firebase 配置吗