2012-02-08 2 views
0

사용자가 입력 한 2 EditText이 있습니다. 사용자가 제출을 클릭하면 값이 Listview 어댑터에 추가됩니다. 값은 StringTokenizer을 사용하여 구분됩니다. 첫 번째 EditText이 비어 있고 앱이 force closed 인 경우 NoSuchElementException이 걸립니다. 그래서 저는 try-catch을 포함 시켰습니다. 더 이상 강제하지 않았습니다. 그러나 이제는 사용자가 입력 한 값이 행에 추가되지 않습니다. 항목은 계속 추가되지만 값은 없습니다. 이 예외는 어떻게 해결합니까?안드로이드 - NoSuchElementException가있는 ListView 문제

즉, 예외에 대해 try-catch을 추가 한 후에는 항목의 값이 비어 있습니다.

이 올바른 방법이 아닙니다처럼 예외를 잡기 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() 메서드를 호출하고 결과를 무시하는 것입니다. 올바른지 확인하십시오. 아마 안드로이드 개발자가 아니기 때문에 안드로이드에서 일반적이라면이 비트를 무시할 수 있습니다.하지만 적어도 생각한 것입니다.