如果我在服务器上删除或添加某些内容,我所在的活动和显示数据会重新加载,这在我的情况下非常糟糕,我该如何解决?
这就是我从服务器获取数据的方式:
reference.child(userId).child("KEYS").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
codes.add(dataSnapshot.getValue(Codes.class));
codesAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Codes code = dataSnapshot.getValue(Codes.class);
int index = getItemIndex(code);
codes.set(index, code);
codesAdapter.notifyItemChanged(index);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
Codes code = dataSnapshot.getValue(Codes.class);
int index = getItemIndex(code); // строка 105 с ошибкой
codes.remove(index);
// codesAdapter.notifyItemRemoved(index);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
它在日志中给出错误:
Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:5665) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$ MethodAndArgsCaller.run(ZygoteInit.java:822) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 03-17 17:21:55.166 15784-15784/? E/wpa_supplicant:RSSI=-30;LINKSPEED=72;NOISE=9999;FREQUENCY=2412;150) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 822) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 03-17 17:21:55.166 15784-15784/?E/wpa_supplicant:RSSI=-30;LINKSPEED=72;NOISE=9999;FREQUENCY=2412;150) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 822) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 03-17 17:21:55.166 15784-15784/?E/wpa_supplicant:RSSI=-30;LINKSPEED=72;NOISE=9999;FREQUENCY=2412;5665) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:822) 在 com.android.internal.os.ZygoteInit.main( ZygoteInit.java:712) 03-17 17:21:55.166 15784-15784/? E/wpa_supplicant:RSSI=-30;LINKSPEED=72;NOISE=9999;FREQUENCY=2412;5665) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:822) 在 com.android.internal.os.ZygoteInit.main( ZygoteInit.java:712) 03-17 17:21:55.166 15784-15784/? E/wpa_supplicant:RSSI=-30;LINKSPEED=72;NOISE=9999;FREQUENCY=2412;822) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 03-17 17:21:55.166 15784-15784/?E/wpa_supplicant:RSSI=-30;LINKSPEED=72;NOISE=9999;FREQUENCY=2412;822) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 03-17 17:21:55.166 15784-15784/?E/wpa_supplicant:RSSI=-30;LINKSPEED=72;NOISE=9999;FREQUENCY=2412;
日志中有错误的行:
private int getItemIndex(Codes codes1) {
int index = -1;
for (int i = 0; i < codes.size(); i++) {
if (codes.get(i).key.equals(codes1.key)) { //это строка 142
index = i;
break;
}
}
return index;
}
int index = getItemIndex(code); // это строка 105 она если в коде выше
在代码中发现了许多错误,因此,在更改此内容时会重新启动。
更改了行:
在: