繁体   English   中英

如何启用firebase离线数据并将数据传递给recyclerview适配器?

[英]how to enable firebase offline data and pass the data to recyclerview adapter?

我在 android 聊天应用程序上工作,它工作正常,直到我将此行添加到我的应用程序 class FirebaseDatabase.getInstance().setPersistenceEnabled(true); 启用获取离线用户消息会导致我的应用程序崩溃并显示此错误消息

com.google.firebase.database.DatabaseException: Failed to convert a value of type java.lang.String to long

如果我从 myApplication class 应用程序中删除此行工作正常,我知道这是因为我在 pojo class 中获取数据,如何做到这一点以获得 firebase 适配器的好处我的离线回收器功能并传递这些数据回收器消息

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

和消息 class

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;

然后创建 class 的实例并将其传递给适配器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM