android: Daten aktualisieren im listview nach dem löschen aus der Datenbank
Ich habe eine Anwendung, die ruft die Daten aus der DB und zeigt Sie in einer Liste anzeigen. Ich habe eine benutzerdefinierte adapter für die gleichen. Also, wenn ich drücken Sie die Schaltfläche "löschen", eine Taste zum löschen für jede Zeile in der Liste angezeigt wird. Wenn ich drücke, dass die bestimmte Zeile gelöscht wird, in der DB und den gleichen Ausdruck in der listview auch. Das problem ist, es ist nicht wegen dieser änderung, ich soll die app schließen und erneut öffnen oder verschieben in eine andere Tätigkeit und zurück, um zu sehen, die aktualisierten Ergebnisse.
Also meine Frage ist: wo kann ich anrufen, der notifyDataSetChanged()
Methode, um es sofort aktualisiert?
Hier ist mein customadapter anzeigen:
public View getView(int position, View convertView, ViewGroup parent) {
//TODO Auto-generated method stub
MenuListItems menuListItems = menuList.get(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.customlist, parent, false);
}
Button ck = (Button) convertView.findViewById(R.id.delbox);
if(i){
ck.setVisibility(View.VISIBLE);}
else{
ck.setVisibility(View.GONE);
}
ck.setTag(menuListItems.getSlno());
ck.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
final Integer Index = Integer.parseInt((String) v.getTag());
final DataHandler enter = new DataHandler(c);
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//Yes button clicked
enter.open();
enter.delet(Index);
enter.close();
notifyDataSetChanged();
dialog.dismiss();
break;
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
dialog.dismiss();
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(c);
builder.setMessage("Are you sure you want to Delete?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
});
TextView id = (TextView) convertView.findViewById(R.id.tvhide);
id.setText(menuListItems.getSlno());
TextView title = (TextView) convertView.findViewById(R.id.tvtitle);
title.setText(menuListItems.getTitle());
TextView phone = (TextView) convertView.findViewById(R.id.tvpnumber);
phone.setText(menuListItems.getPhone());
//ck.setChecked(menuList.)
notifyDataSetChanged();
return convertView;
}
InformationsquelleAutor Pavan Kumar | 2014-12-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Daten löschen aus dem adapter der listview über
adapter.remove(adapter.getItem(position));
und rufen Sie dannnotifyDataSetChanged()
adapter.Dank einer Tonne mate. Es arbeitete. @jay
Es nicht funktioniert
InformationsquelleAutor Jay
Sind Sie der Speicherung der Daten, zeigt Ihre
ListView
in einer Liste irgendwo (was Sie nicht zeigen, in den code einfügen. Es wäre schön ein update Ihrer Frage)Dann, wenn Sie entfernen Sie Ihre Daten aus dem dialog, löschen Sie die realen Daten, aber nicht die, die in Ihrer Liste abgelegt, dass Sie-adapter verwendet, um zu zeigen, das
ListView
. So müssen Sie einfach entfernen Sie diese Daten aus dieser Liste aus und rufen dannnotifyDataSetChanged()
und es wird funktionieren.InformationsquelleAutor jujux789