2017-01-03 3 views
0

я получаю эту странную ошибку при попытке загрузить набор данных в FirebaseRecyclerAdapterFirebase 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); 
    } 

} 
+0

Решено здесь: https://stackoverflow.com/questions/39552348/firebase-databaseexception-failed-to-convert-value-of-type-java-lang-long-to-st/45557421#45557421 –

ответ

1

достаточно просто я просто смотрел один «ребенок» слишком далеко в моей базе данных:

database = FirebaseDatabase.getInstance().getReference().child("users").child(user.getUid()).child("profiles_info"); 

дал мне правильное расположение и может правильно загрузить все. Проверьте свои пути!

+0

Вы должны отметьте этот ответ как «принятый», чтобы мы знали, что ваша проблема решена. – koceeng

+0

Мне нужно подождать несколько часов, прежде чем я смогу это сделать. – Benni

+0

«Проверьте свои пути» - отличный ответ –

Смежные вопросы