2012-02-08 54 views
0

我有一個2 EditText用戶輸入。一旦用戶點擊提交,這些值將被添加到Listview適配器。這些值使用StringTokenizer分開。但是當第一個EditText爲空並且應用程序爲force closed時,會捕獲NoSuchElementException。所以我包括一個try-catch,它並沒有強制關閉了。但現在,用戶輸入的值不會添加到行中。項目仍然添加,但沒有值。我如何解決這個異常?Android - ListView問題與NoSuchElementException

總之,在我爲異常添加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中很常見,那麼您可以忽略這一點 - 但至少我會考慮一些事情。