当前位置: 首页 > 知识库问答 >
问题:

调用setOnItemClickListener时从自定义列表视图获取文本时出现问题

夏祯
2023-03-14

我使用链接的哈希映射创建了一个自定义列表视图,其中包含项目和子项目。我想设置item click listener,并通过intent将单击的项目作为字符串传递给下一个活动。

最终ListView结果ListView=(ListView)findViewById(R.id.results\u 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(位置)抛出一个空值。输出应该是包含在id text 1中的文本。例如,当我单击第一个项目时,它应该将R. string. a中的值传递给结果活动

共有1个答案

黄鸣
2023-03-14

您正在使用hashmap。Hashmap不适用于索引,但适用于键,因此当您尝试获取特定元素时,您使用的键是String类型,而不是索引。ListView位置是导致崩溃的Int。

 类似资料:
  • 我有一个Java程序来调用python脚本。我使用了exec方法。请在下面找到代码片段: Python程序(从维基百科收集一部分文本)单独运行时,可以提供适当的输出。当从Java调用时,我无法从python程序获得完整的输出。 我使用ready()方法检查了BufferedReader对象的状态(如本文所述,代码进入了无限循环)。 我认为其他人也面临着类似的问题-https://stackover

  • 我创建了一个类myTextView,当我尝试为同一个类创建对象时,它扩展了TextView:动态工作:myTextView mytv=new myTextView(this.MainActivity);它起作用了。但myTextView mtv=(myTextView)findViewById(R.id.mytV); 它会出错。请参阅Log Cat输出。即使我将xml中的标签从TextView更改

  • 故事 我用的是keycloak 6.0.1。我有一个领域有两种类型的用户:管理员和常规用户。我需要一个主题,可以区分他们之间,因为登录是不同的(3字段vs 2字段)。因此,我希望扩展提供程序FreeMarkerLoginFormsProvider以传递一个自定义参数。我正在使用keycloak部署器部署我的SPI。 Keycloak在部署时不幸引发异常: 我也尝试过模块方法,但得到一个NullPo

  • 我有一个片段,我在其中膨胀“Fragment\u board.xml”: 如您所见,fragment\u board包含一个自定义视图“BoardView”,我想从中加载以下“view\u board.xml”: 我的自定义视图包含两个滚动视图(我使用它进行平移),我希望能够在其他布局中重复使用它。BoardView扩展了外部(垂直)滚动视图,如下所示: 当我独立使用它时,它会膨胀得很好,我可以在

  • 为什么不能将响应转换为Unicode?这是谷歌API中的bug吗?我能做些什么来解决这个问题吗?

  • 我可以用水槽获取推文,但是,流式传输的语言不是我想要的。下面是flume.conf文件 我收到的推文如下所示: 有人能建议我需要做的改变吗?