2012-02-08 4 views
0

J'ai un 2 EditText dans lequel l'utilisateur entre. Une fois que l'utilisateur clique sur Envoyer, les valeurs sont ajoutées à un adaptateur Listview. Les valeurs sont séparées en utilisant StringTokenizer. Mais un NoSuchElementException est pris lorsque le premier EditText est vide et l'application est force closed. Donc j'ai inclus un try-catch et il n'a plus forcé de fermer. Mais maintenant, les valeurs entrées par l'utilisateur ne sont pas ajoutées à la ligne. Les éléments sont toujours ajoutés mais il n'y a pas de valeurs. Comment puis-je résoudre cette exception?Android - problème ListView avec NoSuchElementException

En résumé, après avoir ajouté un try-catch pour l'exception, les valeurs dans l'élément sont vides.

Adapter.java

public View getView(final int position, View convertView, ViewGroup parent) 
    { 
     View row = convertView; 

     if(row == null) 
     { 
      LayoutInflater inflater = getLayoutInflater(); 
      row = inflater.inflate(R.layout.custom_list_item, null); 
     } 
     try 
     { 
     StringTokenizer tokens = new StringTokenizer(noteList.get(position), ":"); 
     String first = tokens.nextToken(); 
     String second = tokens.nextToken(); 
     row.getTag(); 
     ((TextView)row.findViewById(R.id.nametv)).setText(first); 
     ((EditText)row.findViewById(R.id.result)).setText(second); 
     } 

     catch (NoSuchElementException f) 
     {   

     } 

} 

Répondre

0

Attraper l'exception comme ce n'est pas la bonne approche - vous pouvez facilement l'éviter en utilisant StringTokenizer.hasMoreTokens().

Par exemple, vous voudrez peut-être quelque chose comme:

String first = tokens.hasMoreTokens() ? tokens.nextToken() : ""; 
String second = tokens.hasMoreTokens() ? tokens.nextToken() : ""; 

De cette façon, vous pouvez traiter gracieusement avec moins qu'il y ait entrée que prévu.

Maintenant, la ligne suivante est tout simplement:

row.getTag(); 

Qu'est-ce que ça voulait dire faire? Il est étrange d'appeler une méthode getXyz() et simplement ignorer le résultat - êtes-vous sûr que c'est correct? C'est peut-être - je ne suis pas un développeur Android, donc si c'est courant dans Android, alors vous pouvez ignorer ce peu - mais c'est au moins quelque chose que je pense.