2017-08-05 221 views
0

我想如果我使用cardArrayAdapter.addonChildRemoved然后它会添加新的孩子的ListView从ArrayAdapterOnChildRemoved火力地堡的Android

@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(); 
} 

删除。 但cardArrayAdatper.remove如果我从火力地堡中onChildAdded

删除不从列表中删除我这样做

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

这里是我的数据库结构 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) 

希望它能帮助。