Из приложения заполняю данные на сервер Firebase
, и тут же отображаю их в RecyclerView
, по при первом запуске когда происходит запись на сервер в RecyclerView
намного больше пунктов чем должно быть, на сервере их нет, они являются клонами друг друга. Вот код:
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child(userId).exists()){
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);
codes.remove(index);
codesAdapter.notifyItemRemoved(index);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}else{
if(newArr.contains("newArr")) {
reference.child(userId).child("Тут не пусто").setValue("Да да это правда");
for (int k = 1; k < 4; k++) {
String cod = "G-" + (k + (k * 3)) * 5553;
reference.child(userId).child("KEYS").child(cod).child("cod").setValue(cod);
}
SharedPreferences.Editor editor = newArr.edit();
editor.putString("newArr","false");
editor.apply();
}
}
}
@Override public void onCancelled(DatabaseError databaseError) { }
});
Решил вопрос выносом функции получения данных:
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.child(userId).exists()){
reference.child(userId).child("Тут не пусто").setValue("Да да это правда");
for (int k = 1; k < 4; k++) {
String cod = "G-" + (k + (k * 3)) * 5553;
reference.child(userId).child("KEYS").child(cod).child("cod").setValue(cod);
}
}
}
@Override public void onCancelled(DatabaseError databaseError) { }
});
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);
codes.remove(index);
codesAdapter.notifyItemRemoved(index);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Хочу заменить в тегах <img> все атрибуты src на data-src, по всему проекту, но чтобы не затрагивались теги script, js-код и тп
Не знаю как создать ячейки для сапера в html/css/javascriptС помощью div'ов или как? Мне не хватает знаний для этого
Можно чуточку переделать скрипт, и сделать, чтоб при вводе в поле <input type="text" id="input"> текста, дубликал шел в <input type="text" id="input1">, но с транслитомА...