la base de données.DatabaseException: impossible de convertir un objet de type java.lang.Chaîne de type

Mon Problème

      08-10 04:23:28.820 21501-21501/my.org.medicare.medicareapp E/AndroidRuntime: FATAL EXCEPTION: main                                              Process: my.org.medicare.medicareapp, PID: 21501                                             com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type my.org.medicare.medicareapp.protest
at com.google.android.gms.internal.zzaln.zzd(Unknown Source)
at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
at com.google.android.gms.internal.zzaln.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at my.org.medicare.medicareapp.FirebaseHelper.fetchData(FirebaseHelper.java:50)
at my.org.medicare.medicareapp.FirebaseHelper.access$000(FirebaseHelper.java:14)            atmy.org.medicare.medicareapp.FirebaseHelper$1.onChildAdded(FirebaseHelper.java60)at com.google.android.gms.internal.zzahe.zza(Unknown Source)                                      at com.google.android.gms.internal.zzaje.zzcta(Unknown Source)                          at com.google.android.gms.internal.zzajh$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Mon Activité Principale Code:

 rv = (RecyclerView) findViewById(R.id.rv);
        rv.setLayoutManager(new LinearLayoutManager(this));
        //INITIALIZE FIREBASE DB
        db = FirebaseDatabase.getInstance().getReference().child("Pro");;

        helper = new FirebaseHelper(db);
        //ADAPTER
        adapter = new MyAdapter(this, helper.retrieve());
        rv.setAdapter(adapter);

Et mon FirebaseHelper:

public class FirebaseHelper {
DatabaseReference db;
Boolean saved=null;
ArrayList<protest> spacecrafts=new ArrayList<>();
public FirebaseHelper(DatabaseReference db) {
this.db = db;
}
//WRITE IF NOT NULL
public Boolean save(protest spacecraft)
{
if(spacecraft==null)
{
saved=false;
}else
{
try
{
db.child("Pro").push().setValue(spacecraft);
saved=true;
}catch (DatabaseException e)
{
e.printStackTrace();
saved=false;
}
}
return saved;
}
//IMPLEMENT FETCH DATA AND FILL ARRAYLIST
private void fetchData(DataSnapshot dataSnapshot)
{
spacecrafts.clear();
//dataSnapshot.getChildren()
for (DataSnapshot ds : dataSnapshot.getChildren())
{
protest spacecraft=ds.getValue(protest.class);
spacecrafts.add(spacecraft);
}
}
//READ THEN RETURN ARRAYLIST
public ArrayList<protest> retrieve() {
db.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return spacecrafts;
}
}

Mon point de vue Titulaire

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView nameTxt,propTxt,descTxt;
ItemClickListener itemClickListener;
public MyViewHolder(View itemView) {
super(itemView);
nameTxt= (TextView) itemView.findViewById(R.id.nameTxt);
propTxt= (TextView) itemView.findViewById(R.id.propellantTxt);
descTxt= (TextView) itemView.findViewById(R.id.descTxt);
itemView.setOnClickListener(this);
}
public void setItemClickListener(ItemClickListener itemClickListener)
{
this.itemClickListener=itemClickListener;
}
@Override
public void onClick(View view) {
this.itemClickListener.onItemClick(this.getLayoutPosition());
}

Ci-dessous est ma structure de données, j'essaie de lire "Pro"

Structure De Données

Ma Protestation structure:

public class protest {
private String name;
private String contact;
private String centre;
public protest(){};
public String getName(){return name;}
public String getContact(){return contact;}
public String getCentre(){return centre;}
public void setName(String name) {
this.name = name;
}
public void setContact(String contact) {
this.contact = contact;
}
public void setCentre(String centre) {
this.centre = centre;
}
}

Pourrais-je savoir quel est le problème? Je suis nouveau sur firebase et j'ai besoin de votre aide. J'ai lu quelques question similaire ici, mais je n'arrive toujours pas à résoudre mon problème. Peut-expert ici m'aider?

Mise à jour:
Testé à nouveau avec impression..
lorsque Datasnapshot aller à

  public ArrayList<protest> retrieve() {
db.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
System.out.println(dataSnapshot.getValue());
fetchData(dataSnapshot);
}

08-10 06:26:47.548 26700-26700/ma.org.l'assurance-maladie.medicareapp j'/Système.: {nom=lee, contact=123456, centre=jalan ipoh}

Mais quand Datasnapshot aller à

 private void fetchData(DataSnapshot dataSnapshot)
{
spacecrafts.clear();
//dataSnapshot.getChildren()
for (DataSnapshot ds : dataSnapshot.getChildren())
{
System.out.println(ds.getValue());
protest spacecraft=ds.getValue(protest.class);
spacecrafts.add(spacecraft);
}
}

08-10 06:26:47.548 26700-26700/ma.org.l'assurance-maladie.medicareapp j'/Système.: jalan ipoh

Quel est le problème?

imprimer le dataSnapshot valeur et vérifiez qu'il retourne la chaîne ou de l'objet
Le foin c'est Firebase com.google.firebase.la base de données.DatabaseException Exception donc, essayez de balise de Firebase
Chers USKMobility - 08-10 06:13:56.794 21719-21719/ma.org.l'assurance-maladie.medicareapp j'/Système.: {nom=lee, contact=123456, centre=jalan ipoh} Le retour de l'Objet
dans quelle ligne l'exception se produire?
DataSnapshot changement de valeur de {nom=lee, contact=123456, centre=jalan ipoh} à jalan ipoh. quand je l'appelle fetchData fonction. Je ne comprends pas pourquoi modification de données

OriginalL'auteur jeff | 2016-08-10