Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-ListView问题与NoTouchElementException_Java_Android_Android Listview - Fatal编程技术网

Java Android-ListView问题与NoTouchElementException

Java 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

我有一个用户输入的2
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()
方法并忽略结果是很奇怪的-您确定它是正确的吗?这可能是——我不是安卓开发者,所以如果这在安卓中很常见,那么你可以忽略这一点——但至少我会考虑这一点