2017-08-05 8 views
0

私はonChildRemovedcardArrayAdapter.addを使用する場合、それはリストビューに新しい子が追加されますArrayAdapterOnChildRemoved Firebaseアンドロイド

@Override 
public void onChildRemoved(DataSnapshot dataSnapshot) { 
    Toast.makeText(getApplicationContext(),dataSnapshot.getKey(),Toast.LENGTH_LONG).show(); 
    String id = dataSnapshot.getKey(); 
    Card card1 = new Card(id); 
    cardArrayAdapter.remove(card1); 
    listView.setAdapter(cardArrayAdapter); 
    cardArrayAdapter.notifyDataSetChanged(); 
} 

から削除しようとしています。 しかし、私はonChildAdded

にFirebaseから削除した場合、私はここでは、この

Card card = new Card(dataSnapshot.getKey(), lat.getValue().toString(), tempLatitude, address); 
cardArrayAdapter.add(card); 
listView.setAdapter(cardArrayAdapter); 

をしたリストからcardArrayAdatper.remove削除されることはありません、私のDB構造 enter image description here

+0

'cardArrayAdapter'の型はわかりませんが、期待通りに' cardArrayAdapter.remove(new Card(id));を処理しない可能性が高いようです。おそらく、既存のカードオブジェクトをそのIDで検索し、 'cardArrayAdapter.remove(existingCardObject)'を検索するべきでしょう。 –

答えて

0

はあなたがアダプタからカードオブジェクトを削除することはできませんです新しいオブジェクトを作成し、特定のカードが削除されることを期待するとき。

cardArrayAdapter.remove(new Card(id));を使用すると、作成したばかりのカードオブジェクトをアダプタから取り外すことになります。あなたが何をする必要があるか、IDに基づいて、所望のカードオブジェクトを検索し、このようにそれを削除することです:

cardArrayAdapter.remove(foundedCardObject) 

はそれがお役に立てば幸いです。

関連する問題