实时更改数据时数据库(firebase)应用崩溃

时间:2019-09-12 18:01:57

标签: android firebase-realtime-database

Its data structue 它不仅处理这些数据,而且与this one too的错误相同 当我将其他设备中的数据保存到数据库(firebase)应用程序时崩溃,在该处检索数据并将其设置到其他设备的回收视图中

onDataChange是实时的,在更改数据时会自动调用
通知类别



public class Notifications {
    private String Name;
    private String Email;
    private String Message;
    private String Time;
    private String Date;

    public Notifications() {

    }

    public Notifications(String Name, String Email, String Message, String Time, String Date) {
        this.Name = Name;
        this.Email = Email;
        this.Message = Message;
        this.Time = Time;
        this.Date = Date;
    }

    public String getName() {
        return Name;
    }

    public String getEmail() {
        return Email;
    }

    public String getMessage() {
        return Message;
    }

    public String getTime() {
        return Time;
    }

    public String getDate() {
        return Date;
    }
}
DatabaseReference userref = FirebaseDatabase.getInstance().getReference().child("Notification");
        userref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    notificationList.clear();
                    for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {

                        Notifications notifications = userSnapshot.getValue(Notifications.class);

                        notificationList.add(notifications);

                    }
                    Collections.reverse(notificationList);
                    mAdapter = new Adapter_Notification(notificationList);
                    mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));

                    mRecyclerView.setAdapter(mAdapter);


                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

显示此错误

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.Boolean to type com.example.simpleapplocker.Notifications

在线

 notificationList.add(notifications);

启动后将检索该数据并显示在回收视图中 这意味着存在数据或可能创建了通知,但未上传其他数据,因此此函数可能称为???

2 个答案:

答案 0 :(得分:1)

尝试这种方法,对我有用

FirebaseDatabase database = FirebaseDatabase.getInstance();
                DatabaseReference myRef = database.getReference("Notification");
                myRef.addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                        if(dataSnapshot.exist()) {
        Notifications notifications = userSnapshot.getValue(Notifications.class);
        
                                notificationList.add(notifications);
        
                            }
                            Collections.reverse(notificationList);
                            mAdapter = new 
      Adapter_Notification(notificationList);
                            mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
        
                            mRecyclerView.setAdapter(mAdapter);
     
                    }
        
                    @Override
                    public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
        
                    }
        
                    @Override
                    public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
        
                    }
        
                    @Override
                    public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
        
                    }
        
                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
        
                    }
                });

答案 1 :(得分:0)

Notifications notifications = userSnapshot.getValue(Notifications.class);

在这一行中,您收到错误消息,指出布尔对象无法转换为通知。如果您已将该子项的值设置为true或false(不带双引号),则可能会出现。再次看到它,并尝试在要设置为子值的“ true”或“ false”周围添加双引号。