Android EditText в ListView - PullRequest
       5

Android EditText в ListView

0 голосов
/ 31 января 2011

Я создал собственный адаптер массива для привязки пользовательской строки, содержащей статический текст и редактируемый текст редактирования.Я пытаюсь зарегистрироваться, чтобы получать уведомления, когда пользователь изменяет текст в тексте редактирования и когда получает уведомление, чтобы определить, какой строке ArrayList соответствует измененный EditText.

В прошлом с другими типами представлений, такими как SpinnerЯ мог бы просто вставить ссылку на родительское представление и номер строки в тег для представления Spinner.И затем, когда мне сообщили, что значение изменилось, я прочитал тег, чтобы определить, как соотнести его с главным ArrayList.

Проблема с регистрацией для уведомления об изменении EditText заключается в том, что вы не возвращаете представление, а вместо этого получаете TextWatcher, и у меня нет возможности сопоставить исходное представление или строку ArrayList.

Какую технику вам нужно использовать в этих обстоятельствах?

1 Ответ

1 голос
/ 14 февраля 2011

Вы можете использовать onEditorAction на вашем EditText в вашем ArrayAdapter:

mEditText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
        // Parse parent tree to find position of view
        int position = 0;
        View v = null;
        while (view != v && position < mListView.getChildCount())
            v = mListView.getChildAt(position++);
        // do something
        something(position);
        // do not consume the action
        return false;
}
});

Обратите внимание, что используя этот метод, вы будете запускать событие только тогда, когда пользователь нажмет "ОК","ввод", "готово" и т. д. на клавиатуре.

...