Я пытаюсь запросить базу данных firebase для хранения дочерних значений в держателе внутри адаптера списка. Где хранить значения снимков данных, чтобы использовать их для инициализации держателей?
Запрос на получение данных из 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:
public class UserAccountSettings implements 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» не отображается на мониторе.
Любая помощь будет оценена.
Ага - com.google.firebase.database.DatabaseException: невозможно преобразовать объект типа java.lang.String в тип com.example.ekagra.project.Models.UserAccountSettings
Вы не конвертируете объект datasnapshot в свой собственный класс. Вы должны получить значение этого объекта с помощью singleSnapshot.getValue()
Если вы хотите преобразовать снимок в свой собственный класс, возможно, вам придется сделать это вручную.
Как правильно это сделать?
Пожалуйста, добавьте структуру своей базы данных и, пожалуйста, ответьте @AlexMamo
@AlexMamo Я исправил это, убрав цикл for.
зарегистрируйте результат, который вы получили от моментального снимка
Log.d(TAG, "onDataChange: getting the data 3" + singleSnapshot);
тогда скажи мне, что ты получаешь. Также вы можете добавить изображение своей базы данных для справки
Я получаю - com.google.firebase.database.DatabaseException: не могу преобразовать объект типа java.lang.String в тип com.example.ekagra.project.Models.UserAccountSettings Я обновил UserAccountSettings.class в вопросе
добавьте снимок экрана с ошибкой и где ошибка возникает
Я исправил это, удалив цикл for.
не могли бы вы проверить logcat, есть ли какие-либо журналы, связанные с firebase?