проблема при получении текста из пользовательского списка при вызове setOnItemClickListener - PullRequest
0 голосов
/ 04 ноября 2019

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

final ListView resultsListView = (ListView) findViewById (R.id.results_listview);

    final LinkedHashMap<String, String> nameAddresses = new LinkedHashMap<>();
    nameAddresses.put(getString(R.string.a), getString(R.string.location_a));
    nameAddresses.put(getString(R.string.b), getString(R.string.location_b));
    nameAddresses.put(getString(R.string.c), getString(R.string.location_c));
    nameAddresses.put(getString(R.string.d), getString(R.string.location_d));
    nameAddresses.put(getString(R.string.e), getString(R.string.location_e));
    nameAddresses.put(getString(R.string.f), getString(R.string.location_f));
    nameAddresses.put(getString(R.string.g), getString(R.string.location_g));
    nameAddresses.put(getString(R.string.h), getString(R.string.location_h));
    List<HashMap<String, String>> listItems = new ArrayList<>();
    SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.list_item,
            new String[]{"First Line", "Second Line"},
            new int[]{R.id.text1, R.id.text2});


    Iterator it = nameAddresses.entrySet().iterator();
    while (it.hasNext())
    {
        LinkedHashMap<String, String> resultsMap = new LinkedHashMap<>();
        Map.Entry pair = (Map.Entry)it.next();
        resultsMap.put("First Line", pair.getKey().toString());
        resultsMap.put("Second Line", pair.getValue().toString());
        listItems.add(resultsMap);
    }

    resultsListView.setAdapter(adapter);
    resultsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String itemClicked=nameAddresses.get(position);
            Intent intent=new Intent(seeAllHospitalsCategory.this, departments_category.class);
            intent.putExtra("Hospital Selected", itemClicked);
            startActivity(intent);


        }
    });

get (position) выбрасывает нулевое значение. Вывод должен быть текстом, который содержится в id text1. Например, когда я нажимаю на первый элемент, он должен передать значение в R.string.a результирующему действию

1 Ответ

0 голосов
/ 04 ноября 2019

Вы используете хэш-карту. Hashmap не работает с индексом, но с ключами, поэтому, когда вы пытаетесь получить определенный элемент, вы используете ключ типа String, а не индекс. Позиция ListView - это Int, вызывающая сбой.

...