【问题标题】:problem in getting the text from custom list view while calling setOnItemClickListener调用 setOnItemClickListener 时从自定义列表视图中获取文本的问题
【发布时间】:2019-11-04 16:46:02
【问题描述】:

我使用链接哈希映射创建了一个包含项目和子项目的自定义列表视图。我想设置项目点击监听器并通过意图将点击的项目作为字符串传递给下一个活动。

最终的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 中的值传递给结果活动

【问题讨论】:

    标签: android listview


    【解决方案1】:

    您正在使用哈希图。 Hashmap 不适用于索引,但可以使用键,因此当您尝试获取特定元素时,您使用的是字符串类型的键,而不是索引。 ListView 位置是一个导致崩溃的 Int。

    【讨论】:

    • 那么,我怎样才能达到我想要的输出??
    • 嘿,只是之间,我首先有一个问题,然后我会给你答案。为什么在这里使用 hashmap ?其中键和值具有相同的值
    • 我想显示一个包含项目和子项目的列表视图。所以,我想到了使用 hashmap,然后相应地映射列表视图中的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    相关资源
    最近更新 更多