【发布时间】:2022-01-05 02:32:14
【问题描述】:
当从我的数据库中删除 cmets 部分时,我有一个正在工作的类对象。当 cmets 在那里时,出现此错误“com.google.firebase.database.DatabaseException:无法将 java.util.HashMap 类型的值转换为字符串”。
我的问题是如何更改我的自定义类以能够处理这些数据。 我可以创建新的评论类并在我的景点对象中使用评论对象吗?
package com.example.androidproject;
import android.os.Parcel;
import android.os.Parcelable;
public class attraction implements Parcelable {
private String name;
private String latitude;
private String longitude;
private String rate;
private String totalVisiting;
private String imgSrc;
private String dateOfAdd;
private String createdBy;
public attraction() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public attraction(String name, String latitude, String longitude, int rate, int totalVisitors,
String imgSrc,String createdBy) {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
this.name = name;
}
protected attraction(Parcel in) {
name = in.readString();
latitude = in.readString();
longitude = in.readString();
rate = in.readString();
totalVisiting = in.readString();
imgSrc = in.readString();
dateOfAdd = in.readString();
createdBy = in.readString();
}
public static final Creator<attraction> CREATOR = new Creator<attraction>() {
@Override
public attraction createFromParcel(Parcel in) {
return new attraction(in);
}
@Override
public attraction[] newArray(int size) {
return new attraction[size];
}
};
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getLatitude(){
return latitude;
}
public void setLatitude(String latitude){
this.latitude = latitude;
}
public String getLongitude(){
return longitude;
}
public void setLongitude(String longitude){
this.longitude = longitude;
}
public String getRate(){
return rate;
}
public void setRate(String rate){
this.rate = rate;
}
public String getTotalVisiting(){
return totalVisiting;
}
public void setTotalVisitors(String totalVisiting){
this.totalVisiting = totalVisiting;
}
public String getImgSrc(){
return imgSrc;
}
public void setImgSrc(String imgSrc){
this.imgSrc = imgSrc;
}
public String getDateOfAdd(){
return dateOfAdd;
}
public void setDateOfAdd(String dateOfAdd){
this.dateOfAdd = dateOfAdd;
}
public String getCreatedBy(){
return createdBy;
}
public void setCreatedBy(String createdBy){
this.createdBy = createdBy;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(latitude);
dest.writeString(longitude);
dest.writeString(rate);
dest.writeString(totalVisiting);
dest.writeString(imgSrc);
dest.writeString(dateOfAdd);
dest.writeString(createdBy);
这是我从数据库创建对象的地方
private void initializeListView() {
atr = new ArrayAdapter<>(this, R.layout.custom, atrList);
AttractionAdapter placeAdapter = new AttractionAdapter(this, atrList);
setContentView(R.layout.activity_non_user);
coursesLV = findViewById(R.id.idLVCourses);
ListView listView = (ListView) findViewById(R.id.idLVCourses);
firebaseAttraction = FirebaseDatabase.getInstance().getReference().child("attractions");
firebaseAttraction.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot s : snapshot.getChildren()) {
placeAdapter.add(a);
setLocation(placeAdapter);
}
}
在代码中,firebase 中没有 cmets 部分的情况下一切正常,但我想检索一个景点的所有数据并创建一个对象。
【问题讨论】: