Я пытаюсь запросить базу данных firebase для хранения дочерних значений в держателе внутри адаптера списка. Где хранить значения datasnapshot, чтобы использовать их для инициаторов?
Запрос на получение данных из firebase не работает.
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference
.child(mContext.getString(R.string.dbname_user_account_settings))
.orderByChild(mContext.getString(R.string.field_user_id))
.equalTo(getItem(position).getUser_id());
Log.d(TAG, "getting the data");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "onDataChange: getting the data 2");
for ( DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
Log.d(TAG, "onDataChange: getting the data 3");
holder.username.setText(
singleSnapshot.getValue(UserAccountSettings.class).getUsername());
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(
singleSnapshot.getValue(UserAccountSettings.class).getProfile_photo(),
holder.profileImage);
}
}
UserAccountSettings.class:
открытый класс UserAccountSettings реализует Parcelable {
private String description;
private String display_name;
private String profile_photo;
private String username;
private String website;
public UserAccountSettings(String description, String display_name, String profile_photo, String username,
String website) {
this.description = description;
this.display_name = display_name;
this.profile_photo = profile_photo;
this.username = username;
this.website = website;
}
public UserAccountSettings() {
}
protected UserAccountSettings(Parcel in) {
description = in.readString();
display_name = in.readString();
profile_photo = in.readString();
username = in.readString();
website = in.readString();
}
public static final Creator<UserAccountSettings> CREATOR = new Creator<UserAccountSettings>() {
@Override
public UserAccountSettings createFromParcel(Parcel in) {
return new UserAccountSettings(in);
}
@Override
public UserAccountSettings[] newArray(int size) {
return new UserAccountSettings[size];
}
};
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDisplay_name() {
return display_name;
}
public void setDisplay_name(String display_name) {
this.display_name = display_name;
}
public String getProfile_photo() {
return profile_photo;
}
public void setProfile_photo(String profile_photo) {
this.profile_photo = profile_photo;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
@Override
public String toString() {
return "UserAccountSettings{" +
"description='" + description + '\'' +
", display_name='" + display_name + '\'' +
", profile_photo='" + profile_photo + '\'' +
", username='" + username + '\'' +
", website='" + website + '\'' +
'}';
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(description);
dest.writeString(display_name);
dest.writeString(profile_photo);
dest.writeString(username);
dest.writeString(website);
} }
Ошибка: -
com.google.firebase.database.DatabaseException: невозможно преобразовать объект типа java.lang.String в тип com.example.ekagra.project.Models.UserAccountSettings
Я ожидаю получить текст в файле holder.username и URL-адресе фотографии в файле holder.profile, но цикл for, кажется, даже не работает, поскольку журнал «получение данных 3» не отображается на мониторе.
Буду признателен за любую помощь.