Tengo una aplicación que recupera los datos de la DB y se muestra en una vista de lista. Tengo un adaptador personalizado para el mismo. Así que cuando presione el botón «eliminar», un botón de borrar para cada fila de la lista que se muestra. Si yo prensa que, la fila particular se elimina en la DB y la misma debe ser reflejado en el listview también. El problema es, que no refleja este cambio, debo cerrar la aplicación y volver a abrir o mover a alguna otra actividad y volver a ver los resultados actualizados.

Así que mi pregunta es: ¿dónde tengo que llamar a la notifyDataSetChanged() método para conseguir que se actualice al instante?

Aquí está mi customadapter vista:

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

2 Comentarios

  1. 6

    Que usted necesita para eliminar los datos del adaptador de la listview a través de adapter.remove(adapter.getItem(position)); y, a continuación, llamar a notifyDataSetChanged() en el adaptador.

  2. 1

    Que se van a almacenar los datos que muestra su ListView en una Lista en algún lugar (que no se muestran en el código de su pasta. Sería bueno actualizar tu pregunta)

    Entonces, cuando se quita sus datos en el cuadro de diálogo, se eliminarán los datos reales, pero no la que está almacenada en su Lista, que el adaptador se utiliza para mostrar el ListView. Así que usted simplemente necesita para eliminar estos datos de esta Lista y, a continuación, llamar a notifyDataSetChanged() y va a trabajar.

Dejar respuesta

Please enter your comment!
Please enter your name here