gpt4 book ai didi

java - Firebase Realtime 在类 java.lang.CharSequence 上找不到要序列化的属性

转载 作者:行者123 更新时间:2023-12-01 18:45:57 24 4
gpt4 key购买 nike

我目前正在使用 firebase 回收器适配器并遇到此错误

"com.google.firebase.database.DatabaseException: No properties to serialize found on class java.lang.CharSequence".

我当前正在使用字符序列从按钮检索文本。

//Class for storing creating litter sightings
public class Item implements Serializable
{
//class variables
public CharSequence user;
public String brief;

//constructor
public Item(CharSequence user, String brief)
{
this.user=user;
this.brief=brief;
}
public Item()
{

}

//getters
public String getBrief() {
return brief;
}
public void setBrief(String myBrief) {
this.brief = myBrief;
}

public String getUser() {
return user;
}

}

最佳答案

您必须使用 Percable 因为

可序列化

Serialized 是一个标准的 Java 接口(interface)。您只需实现 Serialized 接口(interface)并添加重写方法即可。这种方法的问题是使用了反射,并且这是一个缓慢的过程。此方法创建了大量临时对象并导致大量垃圾收集。不过Serialized接口(interface)更容易实现。

可打包

Parcelable 进程比 Serialized 快得多。原因之一是我们明确了序列化过程,而不是使用反射来推断它。按理说,代码已为此目的进行了大量优化。

看下面的例子(可打包):

// MyObjects Parcelable class

import java.util.ArrayList;

import android.os.Parcel;
import android.os.Parcelable;

public class MyObjects implements Parcelable {

private int age;
private String name;
private ArrayList<String> address;

public MyObjects(String name, int age, ArrayList<String> address) {
this.name = name;
this.age = age;
this.address = address;
}

public MyObjects(Parcel source) {
age = source.readInt();
name = source.readString();
address = source.createStringArrayList();
}

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(age);
dest.writeString(name);
dest.writeStringList(address);
}

public int getAge() {
return age;
}

public String getName() {
return name;
}

public ArrayList<String> getAddress() {
if (!(address == null))
return address;
else
return new ArrayList<String>();
}

public static final Creator<MyObjects> CREATOR = new Creator<MyObjects>() {
@Override
public MyObjects[] newArray(int size) {
return new MyObjects[size];
}

@Override
public MyObjects createFromParcel(Parcel source) {
return new MyObjects(source);
}
};
}

// MyObjects instance
MyObjects mObjects = new MyObjects("name", "age", "Address array here");

// Passing MyOjects instance
Intent mIntent = new Intent(FromActivity.this, ToActivity.class);
mIntent.putExtra("UniqueKey", mObjects);
startActivity(mIntent);

结论

Parcelable 接口(interface)比 Serialized 接口(interface)更快与 Serialized 接口(interface)相比,Parcelable 接口(interface)需要更多的时间来实现 Serialized 接口(interface)更容易实现 Serialized 接口(interface)会创建大量临时对象并导致相当多的垃圾收集在android中可以通过Intent传递Parcelable数组。

关于java - Firebase Realtime 在类 java.lang.CharSequence 上找不到要序列化的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59840359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com