android: actualización de Datos en la vista de lista después de eliminar de la base de datos

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 Kommentare

  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.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea