java - 当我更新数据时,它会在应用程序火力库中重复相同的数据
问题描述
我在我的应用程序中使用 firebase 实时数据库列出我的数据。这些数据不断更新。但是当数据在firebase中更新一次时,第二个相同的数据会在我的应用程序中形成。每次更新列表数据都会增加 1。我是说; firebase 实时数据库中有 1 条数据,当该数据更新时,它继续显示与 2-3-4-5-6 相同的数据。
这是我的代码:
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
trackItems = new ArrayList<Track>();
adapter = new TracksAdapter(this, trackItems);
myListView.setAdapter(adapter);
myListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
pos = position;
myListView.setItemChecked(position, true);
}
});
final ValueEventListener trackListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Track track = dataSnapshot.getValue(Track.class);
track.setId(dataSnapshot.getKey());
trackItems.add(0, track);
myListView.setItemChecked(0, true);
refreshList();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
shortWarnToast("Veriler yüklenirken bir hata oluştu.");
}
};
ValueEventListener user_tracksListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
trackItems.clear();
pos = -1;
Iterable<DataSnapshot> user_trackChildren = dataSnapshot.getChildren();
for (DataSnapshot track : user_trackChildren) {
String key = track.getKey();
mDatabaseReference.child("/tracks/" + key).addValueEventListener(trackListener);
}
refreshList();
}
@Override
public void onCancelled(DatabaseError databaseError) {
shortWarnToast("Veriler yüklenirken bir hata oluştu.");
}
};
解决方案
推荐阅读
- python - sqlalchemy-flask 应用程序中的属性错误(键),无法连接到数据库
- php - laravel 项目如何在没有路由和控制器的情况下工作?
- php - 如何通过 php 在 mysql 中使用 bcrypt
- mysql - 如何在 MySQL 中连接两个不相关的表?
- python - 如何阅读熊猫的第一列和最后一列?
- c++ - 警告处理为错误这里有什么问题?
- javascript - js如何知道子元素的个数?
- uart - 为什么 samd21 将 modbus 自己的响应作为主请求读取?
- c# - DataTemplateSelector 项为 Null
- woocommerce - WooCommerce中有运费时如何隐藏免费送货