Как получить TextView из элемента ListView?

1

У меня есть следующий код для создания ListView:

    SimpleAdapter adapter=new SimpleAdapter(this, DictionaryDbWrapper.getInstance().getAllWords(), 
            android.R.layout.simple_list_item_2, new String[]{DictionaryDbHelper.WORD, DictionaryDbHelper.CATEGORY},
            new int[]{android.R.id.text1, android.R.id.text2});
    mList.setAdapter(adapter);

Он работает и показывает мне элементы, все правильно. Также у меня есть OnItemClickListener со следующим кодом для кликов по элементам:

        View view=mList.getSelectedView();

        if (view==null) {
            Toast.makeText(UpdatingWordActivity.this, "1", Toast.LENGTH_LONG).show();
        }

Но mList.getSelectedView() также возвращает мне значение null. Зачем?

UPDATE: почему это исключение броска бросает:

View v=(View)mList.getItemAtPosition(0);
  • 0
    Вы имеете в виду, что хотите получить строку текстового представления, чтобы вы могли ее использовать. ИЛИ какие функции, пожалуйста, объясните больше.
Теги:

2 ответа

0

Вызов getSelectedView() предназначен для использования переключателей со списком. См. CHOICE_MODE_SINGLE. getItemAtPosition() просто вызывает getItem(position) на базовом адаптере; в вашем случае это SimpleAdapter. Это кастинг вызывает исключение, потому что SimpleAdapter.getItem() не возвращает представление, оно возвращает (я считаю) карту данных, находящихся в данной позиции в адаптере. Другие адаптеры возвращают другие вещи для метода getItem(). Например, CursorAdapter возвращает курсор.

См. Ответ выше для ответа на первый вопрос

0

ListView OnItemClickListener имеет параметр View v as, вам нужно использовать этот параметр для получения текста.

Вот учебник для Android по этой теме.

  • 0
    Пожалуйста, посмотрите на обновления моего вопроса также.
  • 0
    попробуйте это, TextView v = (TextView) mList.getItemAtPosition (0);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню