Android - проблема ListView с NoSuchElementException - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть 2 EditText, в который пользователь вводит.Когда пользователь нажимает кнопку «Отправить», значения добавляются в адаптер Listview.Значения разделяются с помощью StringTokenizer.Но NoSuchElementException перехватывается, когда первое EditText пусто и приложение force closed.Поэтому я включил try-catch, и он больше не закрывал.Но теперь значения, которые вводит пользователь, не добавляются в строку.Элементы все еще добавляются, но значения отсутствуют.Как мне разрешить это исключение?

Короче говоря, после того, как я добавил 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)
        {           

        }

}

1 Ответ

0 голосов
/ 08 февраля 2012

Поймать исключение, как это, - неправильный подход - вы можете легко избежать его, используя StringTokenizer.hasMoreTokens().

Например, вы можете захотеть что-то вроде:

String first = tokens.hasMoreTokens() ? tokens.nextToken() : "";
String second = tokens.hasMoreTokens() ? tokens.nextToken() : "";

Таким образом, вы можете иметь дело изящно с меньшим количеством ввода, чем вы ожидаете.

Теперь следующая строка просто:

row.getTag();

Что это значит делать? Странно вызывать метод getXyz() и просто игнорировать результат - вы уверены, что это правильно? Это может быть - я не разработчик Android, поэтому, если это часто встречается в Android, вы можете проигнорировать этот бит - но я думаю, по крайней мере, об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...