【发布时间】:2020-11-07 13:25:22
【问题描述】:
我需要帮助!请。当我删除列表中的第一项时,全部删除后,它会关闭应用程序。
我详细说明了控制台上的内容:
适配器的内容发生了变化,但 ListView 没有收到通知。确保适配器的内容不是从后台线程修改的,而只是从 UI 线程修改的。确保您的适配器在其内容更改时调用 notifyDataSetChanged()。
这是最后的代码onCreate():
private void listarDatos(){
databaseReference.child("example").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
listDatos.clear();
if(dataSnapshot.exists()){
for(DataSnapshot objSnapyshot: dataSnapshot.getChildren()){
Datos p = objSnapyshot.getValue(Datos.class);
listDatos.add(p);
arrayAdapterDatos = new ArrayAdapter<Datos>(MainActivity.this, android.R.layout.simple_list_item_1, listDatos);
listV_personas.setAdapter(arrayAdapterDatos);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void iniciarFirebase(){
FirebaseApp.initializeApp(this);
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference= firebaseDatabase.getReference();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.icon_delete) {
Datos ip = new Datos();
ip.setUid(DatosSelected.getUid());
databaseReference.child("example").child(ip.getUid()).removeValue();
LimpiarCajas();
}
return true;
}
private void LimpiarCajas() {
nombreP.setText("");
distritoP.setText("");
direccionP.setText("");
referenciaP.setText("");
telefonoP.setText("");
productoP.setText("");
pagoP.setText("");
}
//....and class for the 'getter and setter'
public class Datos {
private String Uid;
private String Anombre;
private String Bdistrito;
private String Cdireccion;
private String Dreferencia;
private String Etelefono;
public Datos(){
}
public String getUid() {
return Uid;
}
public void setUid(String uid) {
Uid = uid;
}
public String getAnombre() {
return Anombre;
}
public void setAnombre(String anombre) {
Anombre = anombre;
}
public String getBdistrito() {
return Bdistrito;
}
public void setBdistrito(String bdistrito) {
Bdistrito = bdistrito;
}
public String getCdireccion() {
return Cdireccion;
}
public void setCdireccion(String cdireccion) {
Cdireccion = cdireccion;
}
public String getDreferencia() {
return Dreferencia;
}
public void setDreferencia(String dreferencia) {
Dreferencia = dreferencia;
}
public String getEtelefono() {
return Etelefono;
}
public void setEtelefono(String etelefono) {
Etelefono = etelefono;
}
@Override
public String toString(){
return Anombre;
}
}
【问题讨论】:
-
发布堆栈跟踪