2016-06-10 9 views
1

Ich verwende die Recycleransicht von Firebaseui, um Werte im Warenkorb anzuzeigen, bei denen es sich um einen RecyclerView handelt. Ich habe Löschen-Schaltfläche in jeder Zeile der Recyclerview und wenn ich auf Löschen klicken, sollte es Wert aus Firebase-Datenbank löschen und auch Zeile in Recyclerview sollte gelöscht werden. Aber Problem ist, wenn ich irgendwo auf Recyclerview klicke, werden Einzelteil und Datenbankwert gelöscht.
Hier ist der onClick Code ich verwende:Fehler beim Löschen von Element und Wert Firebase RecyclerView

recyclerViewCart.addOnItemTouchListener(
      new RecyclerItemClickListener(Cart.this, recyclerViewCart, new RecyclerItemClickListener.OnItemClickListener() { 
       @Override 
       public void onItemClick(View childView, int position) { 
        Log.v(TAG, "YouClickon" + position); 

        key = mRecyclerViewAdapter.getRef(position).getKey(); 


        listRef.child(key).removeValue(); 


       } 
      }) { 

      } 
    );  

ich nur diese Operation ausgeführt werden soll, wenn der Benutzer auf Löschen-Schaltfläche klickt. Wie soll ich das machen? Bitte helfen Sie.

Antwort

1

Ihr Klick-Handler ist mit dem gesamten Element verknüpft, sodass er in der Tat immer dann ausgeführt wird, wenn auf dieses Element geklickt wird.

Wenn Sie das Element nur löschen möchten, wenn der Benutzer auf die Schaltfläche klickt, sollten Sie den Klick-Handler mit dieser Schaltfläche verbinden. Sie können in Ihrem populateViewHolder() Methode dies tun:

public void populateViewHolder(ChatHolder chatMessageViewHolder, Chat chatMessage, int position) { 
    chatMessageViewHolder.getDeleteButton().setOnClickListener(...). 
} 
+0

tat, wie u sagte. Aber es gibt eine Nullzeiger-Ausnahme bei getDeleteButton() zurück. SetOnClickListener (...); –

+0

Höchstwahrscheinlich geben Sie keine Schaltfläche zurück. Sie müssen den Code in einem Debugger selbst ausführen, um zu sehen. Stack Overflow ist kein sehr effizientes Tool für dieses Debuggen. –

0

es muss sein:

recyclerViewCart.getRef(position).removeValue(); 
Verwandte Themen