【问题标题】:How to get text in a selected row in ListView, if ListView got item and subitem如果ListView有项目和子项目,如何在ListView的选定行中获取文本
【发布时间】:2015-04-04 00:15:28
【问题描述】:

我有一个列表视图

ListView poiList = (ListView) findViewById(R.id.poiList);

并填充它

SimpleAdapter adapter = new SimpleAdapter(this, data,
                        android.R.layout.simple_list_item_2,
                        new String[] {"name", "dist"},
                        new int[] {android.R.id.text1,
                                   android.R.id.text2});
        poiList.setAdapter(adapter);

有了这个 SimpleAdapter,ListView 中的每一行都有一个项目和一个子项目。一切正常。

现在我为我的 ListView 实现 onItemClick:

poiList.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

            String poiName = ((TextView)view).getText().toString();
}
 }

但我无法获取所选行中的文本。我认为该行中不止一个 TextView (项目和子项目)。我如何参考它们?

【问题讨论】:

  • 你试过 view.findViewById(...) 吗?
  • 视图在点击时自动作为参数传递,在代码中称为“视图”。我不知道如何从中提取文本,更具体地说如何提取两个字符串(项目、子项目)
  • 我期待 view.getText1() /view.getText2() 或 view.getItem() / view.getSubitem() 之类的东西
  • View 是 listItem 本身,而不是 TextView。您必须调用 findViewById() 才能获得实际的 TextView。你在初始化 SimpleAdapter 时为 TextView 分配了一个 ID。
  • @Mattia 检查我的答案。我解释了。

标签: android


【解决方案1】:

正如我在您发布问题时评论的那样,您应该使用:

((TextView)(view.findViewById(android.R.id.text1))).getText().toString()

因为View 不是TextView 本身,而是列表项的View

顺便说一句,很高兴它解决了您的问题。干杯。

【讨论】:

    【解决方案2】:

    为了完成它:

    String selectedFromList = ((TextView (view.findViewById(android.R.id.text1))).getText().toString(); 
    

    【讨论】:

    • 此答案直接复制已接受的答案,因此不会添加任何有助于该问题的进一步读者的任何内容。将来,如果您注意到您发布的答案与已发布的答案相同,那么删除重复答案是一种很好的礼仪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多