Java Android-ListView问题与NoTouchElementException
我有一个用户输入的2Java Android-ListView问题与NoTouchElementException,java,android,android-listview,Java,Android,Android Listview,我有一个用户输入的2EditText。用户单击提交后,这些值将添加到Listview适配器中。使用StringTokenizer分隔这些值。但当第一个EditText为空且应用程序为强制关闭时,会捕获NoTouchElementException。所以我加入了一个try catch,它不再强制关闭。但现在,用户输入的值不会添加到行中。仍将添加项,但没有值。如何解决此异常 简而言之,在我为异常添加了一个try catch之后,item中的值为空 Adapter.java public View g
EditText
。用户单击提交后,这些值将添加到Listview
适配器中。使用StringTokenizer
分隔这些值。但当第一个EditText
为空且应用程序为强制关闭时,会捕获NoTouchElementException
。所以我加入了一个try catch
,它不再强制关闭。但现在,用户输入的值不会添加到行中。仍将添加项,但没有值。如何解决此异常
简而言之,在我为异常添加了一个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)
{
}
}
像这样捕获异常不是正确的方法-您可以使用StringTokenizer.hasMoreTokens()
轻松避免它
例如,您可能需要以下内容:
String first = tokens.hasMoreTokens() ? tokens.nextToken() : "";
String second = tokens.hasMoreTokens() ? tokens.nextToken() : "";
这样,您就可以优雅地处理输入少于预期的情况
现在,下一行就是:
row.getTag();
那意味着什么?调用getXyz()
方法并忽略结果是很奇怪的-您确定它是正确的吗?这可能是——我不是安卓开发者,所以如果这在安卓中很常见,那么你可以忽略这一点——但至少我会考虑这一点