java - 如何启用firebase离线数据并将数据传递给recyclerview适配器?
问题描述
我在 android 聊天应用程序上工作,它工作正常,直到我将此行添加到 myapplication 类FirebaseDatabase.getInstance().setPersistenceEnabled(true);
以启用离线用户消息它导致我的应用程序崩溃并显示此错误消息
com.google.firebase.database.DatabaseException: Failed to convert a value of type java.lang.String to long
如果我从 myApplication 类应用程序中删除此行工作正常,我知道这是因为我在 pojo 类中获取数据,如何做到这一点以利用 firebase 离线功能并将这些数据传递给 recyclerview 适配器我的 fetch 消息方法
DatabasReference ref = FirebaseDatabase.getInstance().getreference().child("messages")
private void fetchMessages() {
if (mChildEventListener == null) {
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
if (snapshot.exists()) {
Messages messages = snapshot.getValue(Messages.class);
messagesList.add(messages);
adapter.notifyDataSetChanged();
mRecyclerView.smoothScrollToPosition(messagesList.size() - 1);
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
ref.addChildEventLustener(mChildEventListener)
我的数据库结构
"Users": {
"useId": {
"name": m,
"image": true
}
"useId": {
"name": n,
"image": true
}
}
"Messages" :{
"mesageId" : {
messsage:"hello"
from: "MERjk5566699jjg"
photoUrl : null
date:145885665255
seen :false
和消息类
public class Messages {
private String message,from ,photoUrl;
private long date;
private boolean seen;
public Messages() {
}
public Messages(String message, String from, String photoUrl, long date, boolean seen) {
this.message = message;
this.from = from;
this.photoUrl = photoUrl;
this.date = date;
this.seen = seen;
}
解决方案
如果有人遇到错误,我会回答我的问题以帮助任何人
com.google.firebase.database.DatabaseException: Failed to convert a value of type java.lang.String to long
使用时FirebaseDatabase.getInstance().setPersistenceEnabled(true);
发生错误是因为我检索数据之类的
Messages messages = snapshot.getValue(Messages.class);
离线使用firebase时这样做是不对的,正确的方法是检索每个孩子喜欢
String text = snapshot.child("message").getValue().toString;
然后创建您的类的实例并将其传递给适配器