Каждый раз, когда я удаляю данные из firebase в представлении списка, я визуализирую разделение данных и не правильно.
У меня уже есть адаптер, но я не могу справиться с этим.
В этом коде я вижу представление списка в базе данных Firebase и, когда я нажимаю на элемент данных, я спрашиваю пользователя, хочет ли он удалить данные.
что мне делать?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
firebaseAuth = FirebaseAuth.getInstance();
firebaseUser = firebaseAuth.getCurrentUser();
setContentView(R.layout.activity_elenco);
storage = FirebaseStorage.getInstance();
//storageReference = storage.getReference();
listView = findViewById(R.id.listView);
databaseReference = FirebaseDatabase.getInstance().getReference("Users");
usersList = new ArrayList<>();
}
@Override
protected void onStart() {
super.onStart();
Query query = databaseReference.orderByChild("id").equalTo(firebaseUser.getUid());
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot usersSnapshot:dataSnapshot.getChildren()){
Users users = usersSnapshot.getValue(Users.class);
usersList.add(users);
keyList.add(usersSnapshot.getKey());
}
UserAdapter userAdapter = new UserAdapter(Elenco.this,usersList);
listView.setAdapter(userAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
final CharSequence[] items = {"SI","NO"};
AlertDialog.Builder builder = new AlertDialog.Builder(Elenco.this);
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
builder.setTitle("Vuoi eliminare la segnalazione?");
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
if(items[i]=="SI"){
StorageReference photoRef = storage.getReferenceFromUrl("gs://tesi-779f2.appspot.com/"+keyList.get(position));
photoRef.delete();
usersList.remove(position);
databaseReference.getRoot().child("Users").child(keyList.get(position)).removeValue();
keyList.remove(position);
startActivity(new Intent(Elenco.this,Profilo.class));
}else if(items[i]=="NO"){
dialog.dismiss();
}
}
});
builder.show();
}
});
}
}