Сбой приложения при попытке получить содержимое представления из ListView с помощью SimpleAdapter

У меня возникла проблема с попыткой получить содержимое представления, которое пользователь щелкнул в ListView. Мой ListView настроен с использованием SimpleAdapter и состоит из «заголовка» и «подзаголовка» для каждого элемента в списке. Они хранятся с использованием HashMap.

В действии также есть счетчик, когда пользователь выбирает элемент в счетчике, ListView обновляется. Это работает нормально, и я просто счел необходимым упомянуть, что происходит в рамках этой деятельности.

Что я пытаюсь сделать, так это получить, какой элемент выбрал пользователь, чтобы я мог направить их к новому действию на основе их выбора (сейчас просто пытаюсь отобразить содержимое просмотра с помощью Toast). Я хочу получить содержимое того, что хранится под ключом «engExp» для элемента.

Вот мой код:

    // HASHMAP FOR LISTVIEW
    List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
    for(int x = 0; x < expressionListForModule.getCount(); x++) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("engExp", expressionListForModule.getString(0));
        map.put("japDef", expressionListForModule.getString(1));
        fillMaps.add(map);
        expressionListForModule.moveToNext();
    }

    // SETUP LISTVIEW
    SimpleAdapter adapter2 = new SimpleAdapter(this, fillMaps, android.R.layout.simple_list_item_2, new String[] {"engExp","japDef"}, new int[] {android.R.id.text1, android.R.id.text2});
    ListView lv = (ListView) findViewById(R.id.expressionList);
    lv.setAdapter(adapter2);
    lv.setTextFilterEnabled(true);
    lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_LONG).show();
        }
    });

В частности, элемент, вызывающий сбой приложения, следующий: ((TextView) view).getText()

Если вам нужно увидеть больше моего кода, пожалуйста, дайте мне знать.

Любая помощь приветствуется, заранее спасибо.


person mwrazam    schedule 15.06.2012    source источник
comment
Вы должны написать код, чтобы получить текст из TextView в методе onItemclick()), а также с помощью аргумента представления вы можете получить этот текст... Попробуйте эту строку contentForLink=view.getText().toString();   -  person Santosh    schedule 15.06.2012
comment
Это вызывает следующую ошибку: метод getText() не определен для типа View   -  person mwrazam    schedule 15.06.2012


Ответы (1)


пытаться

lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView v = (TextView) view.findViewById(android.R.id.text1);
        String contentForLink = v.getText().toString();
        Toast.makeText(getApplicationContext(), contentForLink, Toast.LENGTH_LONG).show();
    }
});
person sAaNu    schedule 15.06.2012
comment
Это точно остановит сбой! Однако сейчас происходит что-то странное. Вместо отображения содержимого самого элемента списка отображается текст самого элемента Spinner. Спасибо. - person mwrazam; 15.06.2012
comment
Я не уверен, почему он не работал с кодом, который вы ввели в первый раз. Но после повторного ввода все заработало отлично! Должно быть, это была какая-то глупая ошибка с моей стороны. Огромное спасибо. - person mwrazam; 19.06.2012