Bonjour/bonsoir a tous, j'espère que vous allez bien. Depuis peu j'ai un souci avec Firebase, je vais essayer d'etre le plus claire possible.
Au lancement de l'application, on atteri sur le fils d'actualite, on voit bel et bien les publications mais en descendant dans le fils d'actualite et que mon utilisateur actuellement connecter recontre sa propre publication, j'obtiens cette erreur de la part de la base de donnees de Firebase
com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertString(com.google.firebase:firebase-database@@19.1.0:408) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@19.1.0:199) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToType(com.google.firebase:firebase-database@@19.1.0:178) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$100(com.google.firebase:firebase-database@@19.1.0:47) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.deserialize(com.google.firebase:firebase-database@@19.1.0:575) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.deserialize(com.google.firebase:firebase-database@@19.1.0:545) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database@@19.1.0:415) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@19.1.0:214) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(com.google.firebase:firebase-database@@19.1.0:79) at com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database@@19.1.0:203) at com.ackerman.ubi.Adapter.PostAdapter$6.onDataChange(PostAdapter.java:254) at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.1.0:75) at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.1.0:63) at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.1.0:55) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7237) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.intern
Clairement qu'il narrive pas a convertir les valeurs de mon Hashmap en String, le probleme est que avant que ne puisse apporter des modifications au niveau de l'interface de l'application, le meme code servant a recuperer les informations du publieur fonctionnais correctement (dont je n'ai pas apporter de modification)
Le code de l'adapter permettant d'afficher les posts et de recuperer les infos sur le publieur :
@NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_post, parent, false); return new PostAdapter.ViewHolder(view); }
@Override public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) { firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
final PostModel postModel = mPostModel.get(position);
/** * Methode pour verifier si le le post est déjà sauvegarder les favoris de l'utilisateur ou non * prenon en parametre l'ID du post ainsi que l'item du memu Popup ( voir menu popup case item_save) * * @param postid * @param menuItem */ private void isSaved(final String postid, final MenuItem menuItem) { FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
@Override public void onCancelled(@NonNull DatabaseError databaseError) {
} }); }
/** * Affichage du popup * * @param view */ private void showPopup(View view) { final PopupMenu popupMenu = new PopupMenu(mContext, view); final PostModel postModel = new PostModel(); popupMenu.inflate(R.menu.menu_post_item); popupMenu.show();
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.item_delete: Toast.makeText(mContext, "Menu pour supprimer.... OK", Toast.LENGTH_SHORT).show(); return true; case R.id.item_save: //Si l'ID l'utilisateur connecter est != de celui du post, afficher cet Item if (firebaseUser.getUid().equals(postModel.getPublisher())) { menuItem.setVisible(false); } else { menuItem.setVisible(true); }
/* Verification si le titre de l'item lors du clique Si = à "Epinglé" on ajoute la valeur Sinon on retire la valeur */ if (menuItem.getTitle().equals("Eplinglé")) { FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid()).child(postModel.getPostid()).setValue(true); } else { FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid()).child(postModel.getPostid()).removeValue(); } isSaved(postModel.getPostid(), menuItem); return true;
case R.id.item_share: Toast.makeText(mContext, "Menu pour partagez.... OK", Toast.LENGTH_SHORT).show(); return true;
default: return false; } } }); }
/** * Methode permattant de verfier l'etat du produit * * @param holder */ private void productState(@NonNull ViewHolder holder, PostModel postModel) { if (postModel.getProduct_state().equals("Neuf")) { holder.product_state.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_box_new_post, 0, 0, 0); } else { holder.product_state.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_box_used_post, 0, 0, 0); } }
/** * Methode permettant de commencer une conversation avec le publisher (sur le clique de l'image) * * @param holder * @param postModel */ private void sendMessage(@NonNull ViewHolder holder, final PostModel postModel) { holder.post_image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (!postModel.getPublisher().equals(firebaseUser.getUid())) { Intent intent = new Intent(mContext, ChatActivity.class); intent.putExtra("profileid", postModel.getPublisher()); mContext.startActivity(intent); } else { Log.d("User is same", "L'utilisateur est identique"); } } }); }
private void getPublisherInfo(final ImageView image_profile, final TextView username, String userid, final Context context) { DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child(userid);
@Override public void onCancelled(@NonNull DatabaseError databaseError) {
} });
} }
P.S : Le probleme se produit uniquement lorsque l'utilisateur recontre sa propre publication ou qu'il va sur son propre profil
(Desole pour les accents)
Delucis
Failed to convert value of type java.util.HashMap
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Delucis