2012-02-08 3 views
0

私は2 EditTextを入力しました。ユーザーが送信をクリックすると、値はListviewアダプターに追加されます。値はStringTokenizerで区切られています。最初のEditTextが空でap​​pがforce closedのときにNoSuchElementExceptionが検出されます。だから私はtry-catchを含め、それはもはや強制終了しませんでした。しかし今、ユーザーが入力した値は行に追加されません。アイテムはまだ追加されていますが、値はありません。この例外はどのように解決するのですか?Android - NoSuchElementExceptionのListView問題

つまり、例外のためにtry-catchを追加した後、itemの値は空です。このような例外をキャッチ

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) 
     {   

     } 

} 

答えて

0

正しいアプローチではありません - あなたは簡単StringTokenizer.hasMoreTokens()を使用してそれを避けることができます。あなたが予想よりもそこに少ない入力されていると優雅を扱うことができる

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

その方法:

たとえば、次のような何かをしたい場合があります。

は今、次の行は単純です:

row.getTag(); 

それが何を意味していますか? getXyz()メソッドを呼び出して、結果を無視するのは奇妙です。正しいのですか?おそらく、Androidデベロッパーではないので、Androidでよく使われるのであれば、このビットを無視することができますが、少なくとも私が考えていることです。

関連する問題