它不仅处理这些数据,而且与的错误相同 当我将其他设备中的数据保存到数据库(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);
启动后将检索该数据并显示在回收视图中 这意味着存在数据或可能创建了通知,但未上传其他数据,因此此函数可能称为???
答案 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”周围添加双引号。