я получаю эту странную ошибку при попытке загрузить набор данных в FirebaseRecyclerAdapter
Firebase DatabaseException Невозможно преобразовать объект типа String,
com.google.firebase.database.DatabaseException: Не может преобразовать объект типа java.lang.String к типу com.magn.test.android.model.ProfilesData
Обращаясь к этому классу:
@IgnoreExtraProperties
public class ProfilesData {
public String forename;
public String surname;
public String quote;
public String birth;
public String demise;
public String id;
public ProfilesData(){
}
public ProfilesData(String forename, String surname, String quote, String birth, String demise, String id){
this.forename = forename;
this.surname = surname;
this.quote = quote;
this.birth = birth;
this.demise = demise;
this.id = id;
}
public String getForename() {
return forename;
}
public void setForename(String forename) {
this.forename = forename;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getQuote() {
return quote;
}
public void setQuote(String quote) {
this.quote = quote;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getDemise() {
return demise;
}
public void setDemise(String demise) {
this.demise = demise;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
Было бы проще, если бы я мог сузить проблему до определенной функции/метода, но адаптер извлекает данные, когда я их распечатываю, когда это будет сделано. Это просто не заканчивается в макете, и приложение заканчивается после завершения.
Вот активность:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_selection);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
mAuth = FirebaseAuth.getInstance();
mAuth.addAuthStateListener(this);
//Initialize database
user = FirebaseAuth.getInstance().getCurrentUser();
database = FirebaseDatabase.getInstance().getReference().child("users").child(user.getUid()).child("profiles_info").child("1");
}
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<ProfilesData, ProfilesViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<ProfilesData, ProfilesViewHolder>(
ProfilesData.class, R.layout.list_item, ProfilesViewHolder.class, database) {
@Override
protected void populateViewHolder(ProfilesViewHolder viewHolder, ProfilesData model, int position) {
System.out.println("NAME ARE: " + model.getForename());
viewHolder.setName(model.getForename() + " " + model.getSurname());
viewHolder.setDates(model.getBirth() + " " + model.getDemise());
}
};
// Scroll to bottom on new messages
firebaseRecyclerAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
}
});
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
/**
* ViewHolder to apply graphical changes when loading profiledata into adapter:
*/
public static class ProfilesViewHolder extends RecyclerView.ViewHolder {
private final TextView name_tv;
private final TextView date_tv;
public ProfilesViewHolder(View itemView){
super(itemView);
name_tv = (TextView) itemView.findViewById(R.id.profile_name_tv);
date_tv = (TextView) itemView.findViewById(R.id.profile_dates_tv);
}
public void setName(String name){
name_tv.setText(name);
}
public void setDates(String dates){
date_tv.setText(dates);
}
}
Решено здесь: https://stackoverflow.com/questions/39552348/firebase-databaseexception-failed-to-convert-value-of-type-java-lang-long-to-st/45557421#45557421 –