【发布时间】:2017-01-16 14:32:39
【问题描述】:
我的代码有点吃力。我已经搜索并尝试了很多方法。我的目标是删除 Firebase 提供给我的应用的上一个条目,firebase 数据来自嵌入式设备。我想替换我的 android 应用中的值。
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) {
}
});
}
}
【问题讨论】:
-
我找到了一个解决方案,很简单,我在 OnChildChanged 中添加了 adapter.clear
标签: android listview firebase firebase-realtime-database