2010-08-31 7 views
0

J'ai une table dans laquelle j'essaie de supprimer dynamiquement des lignes. Chaque rangée a un bouton de suppression, qui ouvre une boîte de dialogue de confirmation. Je souhaite supprimer cette ligne du tableau lorsque la confirmation donne un résultat positif. J'ai eu ce travail, plutôt sloppily, et je me demandais s'il y avait une manière plus simple d'accomplir mon but. Pour clarifier les choses dans l'exemple de code, ma table doit être créée dynamiquement, j'ai donc donné aux boutons de suppression un identifiant de l'identifiant de ligne + 2000. Je détruis aussi et recréer le dialogue dans chaque onPrepareDialog(). Existe-t-il un moyen plus propre de le faire, en particulier sans détruire et recréer la boîte de dialogue chaque fois qu'elle est ouverte? Merci beaucoup!Dialogues Android: confirmation de la suppression d'une ligne de table

Une partie du code de ma classe principale d'activité:

private OnClickListener deleteRowListener = new OnClickListener() { 

       public void onClick(View v) { 
        Bundle args = new Bundle(); 
          args.putInt(DELETE_ID_KEY, v.getId()); 
        showDialog(DIALOG_DELETE,args); 
       } 
     }; 



     @Override 
     protected void onPrepareDialog(int id, Dialog dialog, Bundle args) { 

      switch (id) { 
       case DIALOG_DELETE : { 
        removeDialog(id); 
        dialog = createDeleteDialog(args); 
       } 
      } 
     } 

     @Override 
     protected Dialog onCreateDialog(int id, Bundle args) { 
      switch (id) { 
       case DIALOG_DELETE : { 
        return createDeleteDialog(args); 
       } 
      } 
      return null; 
     } 

private Dialog createDeleteDialog(Bundle args) { 
     final int toDeleteId = args.getInt(DELETE_ID_KEY) - 2000; //FSP!! 
     return new AlertDialog.Builder(this) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
      TableRow row = rowsMap.get(toDeleteId); 
       myTable.removeView(row); 
      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       dialog.cancel(); 
      } 
     }) 
     .create(); 
    } 

Répondre

0

this peut être utile (note- qui utilise une API qui ne sont pas disponibles dans 1.5 - Vous pouvez faire une solution assez simple si vous avez besoin compatibilité de cupcake, cependant)

+0

Merci! Cela fonctionne, mais j'avais l'impression que ListView ne pouvait pas être imbriqué dans une autre vue. J'ai d'autres contrôles dans un ScrollView pour cette activité. – hobgillin

Questions connexes