2017-03-23 5 views
0

Ich verwende FirebasaRecyclerAdapter, um eine Liste der Posts anzuzeigen, die ich in meiner Firebase-Konsole erhalten habe. Ich möchte jede Postreferenz erhalten, um sie löschen zu können. Ich kann schon die URL bekommen:Android FirebaseRecyclerAdapter Objektverweis abrufen und löschen

Ich bekomme die Zeichenfolge postReference und sende es an meine ViewHolder. Dieser viewHolder ist der, mit dem ich meine Posts im Feed anzeigen kann. Wenn der Benutzer auf den Posten klickt, kann er sich die Post Details in einem anderen Fragment (zu dem schicke ich die postReference string:

Bundle bundle = new Bundle(); 
bundle.putSerializable("post", post); 
bundle.putString("postReference", postReferece); 

PostDetailFragment postDetailFragment = new PostDetailFragment(); 
postDetailFragment.setArguments(bundle); 

FragmentTransaction fragmentTransaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.setCustomAnimations(R.anim.slide_left_enter, R.anim.slide_left_exit, R.anim.slide_right_enter, R.anim.slide_right_exit); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.replace(R.id.feed_container, postDetailFragment, "PostDetailFragment").commit(); 

Im PostDetailFragment, ich möchte, dass die Post löschen, wenn Löschtaste angeklickt wird, so:

private View.OnClickListener deleteListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     String postReference = bundle.getString("postReference"); 
     FirebaseDatabase.getInstance().getReference(postReference).removeValue(); 
     ((FeedActivity)context).getSupportFragmentManager().popBackStack(); 
    } 
}; 

Mein Problem ist, dass meine Firebase "postReference" string nicht akzeptiert, heißt es:

Invalid Firebase Database path: https://(myapp).firebaseio.com/users/(userkey)/posts/KIJ999. Firebase Database paths must not contain '.', '#', '$', '[', or ']' 

Irgendwelche Gedanken auf diese

?
+0

Werfen Sie einen Blick auf diese: http://stackoverflow.com/questions/41076398/invalid-firebase-path-com-firebase-paths-must-not-contain – Eknoes

+0

Ich googelte mein Problem, bevor Sie diese Frage stellen. Ich habe das offensichtlich versucht, weil es der erste Link ist, den Google uns gibt. Es löst mein Problem nicht und es ist Zeitverschwendung für jeden, der zu dieser Frage kommen könnte. – Rob

Antwort

0

Also, ich habe endlich das zu lösen. Wenn ich meinen Beitrag entferne, muss ich den Post "Pfad" verwenden, was nicht die URL ist, die ich bisher bekommen habe. Um den Weg anstatt die URL zu bekommen, habe ich:

@Override 
    protected void populateViewHolder(PostViewHolder viewHolder, Post model, int position) { 

    String postUrl = this.getRef(position).toString(); 
    String postRoot = this.getRef(position).getRoot().toString(); 
    String postReference = postUrl.replace(postRoot,""); 

    viewHolder.bindPost(model, position, postReference); 
} 

Dadurch, dass ich den „https://(myapp).firebaseio.com“ Teil der URL entfernen (das ist der Teil Firebase nicht akzeptiert) und steigen Sie den Pfad zu die Post, die ich entfernen möchte.

Verwandte Themen