1

Hallo an alle, wie ich auf Element von benutzerdefinierten ListView löschen kann. Ich kann die Firebase-Daten nicht löschen.Android löschen Firebase-Daten mit benutzerdefinierten Listenansicht

Hier ist der Student Activity in dem alle Schüler in benutzerdefinierten Listenansicht erscheinen werde ich auf Klick

@Override protected void onStart() { super.onStart() gelöscht werden soll;

Query query = databaseReference.orderByChild("type").equalTo("student"); 
    query.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      list.clear(); 
      for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){ 

       ModelClass Mod = dataSnapshot1.getValue(ModelClass.class); 
       list.add(Mod); 

      } 
      final CustomAdapterClassStudent adapterClassCompany = new CustomAdapterClassStudent(AllStudents.this , list); 
      l1.setAdapter(adapterClassCompany); 
      l1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 


       } 
      }); 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 

}

Hier ist meine kundenspezifische Adapter-Klasse mit Array-Adapter

@NonNull 
@Override 
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 

    final View listview = inflater.inflate(R.layout.customadapter , null , true); 
    TextView textViewName = (TextView) listview.findViewById(R.id.textName); 
    TextView textViewAdd = (TextView) listview.findViewById(R.id.textAdd); 
    TextView textViewBio = (TextView) listview.findViewById(R.id.textBio); 

    final ModelClass Mod = compniesModel.get(position); 
    textViewName.setText(Mod.name); 
    textViewAdd.setText(Mod.cgpa); 
    textViewBio.setText(Mod.bio); 



    return listview; 

Hier verlängern ist die ModelClass .. ModelClass enthält Studenten und Firmenfelder in Feuerbasis zu speichern .. überprüft Bild unten

public class ModelClass { 


public String name; 
public String email; 
public String cgpa; 
public String age; 
public String bio; 


public String type; 



public String compName; 
public String compAdd; 
public String compAbout; 


public ModelClass(){} 

public ModelClass(String name, String email, String cgpa, String age, String bio,String type) { 
    this.name = name; 
    this.email = email; 
    this.cgpa = cgpa; 
    this.age = age; 
    this.bio = bio; 
    this.type = type; 
} 

public ModelClass(String compName, String compAdd, String compAbout , String type) { 
    this.compName = compName; 
    this.compAdd = compAdd; 
    this.compAbout = compAbout; 
    this.type = type; 
} 

}

Here is the Database Image Click on this

+0

Können Sie uns Ihre ModelClass zeigen? – Pipiks

+0

hey Pipiks, ich füge meine ModelClass in Frage ... ich kann meine Daten über ModelClass korrekt speichern, wenn der Benutzer "firma" in der Firebase-Datei sagt als "Firma" speichern, ansonsten "Student" .. aber ich kann nicht löschen wo Alle meine Schüler erscheinen in einer benutzerdefinierten Liste. –

+0

Wenn Sie das sagen, werde ich meinen Code auf GitHub aktualisieren, so dass Sie alle meine Codes überprüfen können .. es wäre mir ein Vergnügen, wenn Sie mir helfen .. Ich habe 4 Stunden verschwendet, aber ich habe mich jetzt –

Antwort

0

Sie müssen den Benutzerschlüssel in Ihrem Modell speichern, so fügen Sie diese:

ModelClass Mod = dataSnapshot1.getValue(ModelClass.class); 
Mod.key = dataSnapshot1.getKey(); 

list.add(Mod); 

Und in Ihrem onItemClick:

public String key; 

Dann Sie den Schlüssel einstellen Sie können jetzt den aktuellen Benutzer entfernen:

@Override 
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
    ModelClass model = list.get(i); 
    list.remove(removePosition); 

    databaseReference.child("users").child(model.key).removeValue(); 
} 

HINWEIS

Sie childAdded Ereignis nicht alle Ihre Liste verwenden, sollten neu zu laden, wenn Sie einen Benutzer entfernen.

Sie sollten Ihren Adapter auch nur einmal initialisieren. In Ihrem Abschluss aktualisieren Sie die Liste und rufen Sie notifyDataChanged() auf.

+0

hey Pipiks, ich erfolgreich löschte meine Daten onclick .. Vielen Dank Mann Ihren Code mir helfen :) –

+0

Können Sie mir bitte die Initialisierung von 'DatenbankReferenz' zeigen – Pipiks

+0

databaseReference = FirebaseDatabase.getInstance(). getReference ("Benutzer"); –

Verwandte Themen