我有一个2 EditText
用户输入。用户单击“提交”后,这些值将添加到Listview
适配器。使用StringTokenizer
分隔值。但是,当第一个NoSuchElementException
为空且应用为EditText
时,会发现force closed
。所以我加了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)
{
}
}
答案 0 :(得分:0)
捕获这样的异常不是正确的方法 - 您可以使用StringTokenizer.hasMoreTokens()
轻松避免它。
例如,您可能需要以下内容:
String first = tokens.hasMoreTokens() ? tokens.nextToken() : "";
String second = tokens.hasMoreTokens() ? tokens.nextToken() : "";
通过这种方式,您可以优雅地处理 ,输入的输入比预期的少。
现在,下一行就是:
row.getTag();
这意味着什么?调用getXyz()
方法并忽略结果是很奇怪的 - 你确定它是正确的吗?它可能是 - 我不是Android开发人员,所以如果它在Android中很常见,那么你可以忽略这一点 - 但这至少是我想到的。