Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将数据从Firebase提取到RecyclerView时出错。致命异常:。。。不定义无参数构造函数_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 将数据从Firebase提取到RecyclerView时出错。致命异常:。。。不定义无参数构造函数

Android 将数据从Firebase提取到RecyclerView时出错。致命异常:。。。不定义无参数构造函数,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我设计的活动从firebase Db获取数据并在回收器视图中显示,但运行时出现以下错误 我的代码是 package com.example.android.indiandigitalschool; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.suppo

我设计的活动从firebase Db获取数据并在回收器视图中显示,但运行时出现以下错误

我的代码是

package com.example.android.indiandigitalschool;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

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;

public class ReceiveNews1 extends AppCompatActivity {
private RecyclerView rv;
private ArrayList<RvClass> list = new ArrayList<>() ;
private DatabaseReference demo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_receive_news1);
    rv = findViewById(R.id.rv);
    rv.setHasFixedSize(true);
    rv.setLayoutManager(new LinearLayoutManager(this));

    demo= FirebaseDatabase.getInstance().getReference().child("IDS").child("News");
    demo.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
            RvClass rvClass = snapshot.getValue(RvClass.class);//error occurs here
              list.add(rvClass);

            }
            CustomAdapter adapter = new CustomAdapter(ReceiveNews1.this,list);
            rv.setAdapter(adapter);

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}
}
我的firebase模式是

我犯了什么错误请帮我找出错误?
谢谢

您将收到以下错误:

FATAL EXCEPTION: ... does not define a no-argument constructor
因为您的
RvClass
类没有定义
无参数构造函数

JavaBeans将出现

在Java中,当一个类根本没有构造函数时,编译器会自动添加一个默认的
无参数构造函数。在类中定义任何构造函数时,默认的无参数构造函数就会消失

在您的代码中,您的
RvClass
类定义了这样一个包含三个参数的构造函数:

public RvClass(String title, String message, String time) {}
只要这个构造函数存在,并且您没有定义无参数构造函数,那个类就不会有一个

要解决此问题,请从类中删除该构造函数,或手动添加无参数构造函数,如下所示:

public RvClass() {}
当Firebase Real Time database SDK反序列化来自数据库的对象时,它要求任何正在使用的对象都具有此构造函数,以便可以使用它来实例化对象。对象中的字段是通过使用公共setter方法或直接访问公共成员来设置的

如果您的RvClass没有公共的无参数构造函数,SDK实际上不知道如何创建它的实例。所以它是强制性的


另外请注意,setter和getter不是必需的。setter始终是可选的,因为如果JSON属性没有setter,Firebase客户端将直接在字段上设置值。也不需要具有参数的构造函数。这两种语言都是惯用的,并且有一些不使用它们的好例子。如果将字段设置为公共字段,则getter也是可选的。

public RvClass(){}在RvClass中添加此代码在RvClass中添加RvClass的空构造函数,如public RvClass(){}
public RvClass() {}