0
Im我的代碼掙扎了一下。我已經搜索並嘗試了很多方法。我的目標是刪除Firebase提供給我的應用的以前的條目,Firebase數據來自嵌入式設備。我想替換我的Android應用中的值。更新Firebase時從ListView中刪除舊條目
Firebase正常運行,該應用將顯示Firebase提供的新值,但不會刪除以前的條目。
我還有很多事情要做,但在繼續前要解決基礎問題。
所以基本上OnChildChanged會顯示新的Firebase條目,我只想從Firebase中獲取新值時從Android應用程序中刪除以前的條目。
我已經調查removeValue和setValue方法與無濟於事
public class MainActivity extends AppCompatActivity {
DatabaseReference fDatabase;
ListView listview;
ArrayList<String> list = new ArrayList<>();
ArrayAdapter <String> adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.listview);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
listview.setAdapter(adapter);
fDatabase = FirebaseDatabase.getInstance().getReference();
fDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String value = dataSnapshot.getValue(String.class);
list.add(value);
adapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
String value = dataSnapshot.getValue(String.class);
list.remove(value);
adapter.notifyDataSetChanged();
list.add(value);
adapter.notifyDataSetChanged();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
我發現了一個解決方案,很簡單,我添加了adapter.clear到OnChildChanged –