如何使用OnItemClick从ListView中检索所单击的字符串?

15

我有一些问题在这里,看起来很简单,但我一直在寻找它的解决方案。不幸的是,我什么也没找到。这是我的问题……我正在尝试从一个On item click方法中获取ListView中显示的字符串。

这是我的ListView:

- lol
- hi
- waw
当我点击“lol”时,我想获取“lol”字符串……在这里应该放什么代码?:
lv = (ListView) findViewById(R.id.list_view);
lv.setOnItemClickListener(new OnItemClickListener()
{
 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)
 {
    // Intent newI = new Intent(this,PDetail.class); 
     Intent newI = new Intent (Create.this, PDetail.class);
     //String sd = ((() arg1).getText()).toString();
     //newI.putExtra("x", arg2);
     startActivity (newI);
    // db.getList(arg3);

 }});

你应该发布实际填充 ListView 的代码。 - sdabet
你使用的是什么类型的适配器?它是自定义适配器吗? - Hossam Oukli
我已经知道怎么做了......@user2012、njzk2、karan23已经给了我需要的答案。但是,感谢你的关注。 - Charles Lynch
有多种方法可以实现ListView的Itemtext。https://dev59.com/Emox5IYBdhLWcg3wcT3r#28479593 - Zar E Ahmer
5个回答

30
 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)
     {
         String data=(String)arg0.getItemAtPosition(arg2);


     }});

data 包含您所点击位置的数据。您可以根据需要进行后续操作。


1
我会有很多输入……不仅仅是那三个。我不能一个一个地定义它们……我需要更灵活、更通用的东西。 - Charles Lynch
这三个项目是怎么回事? - njzk2

6

arg0 是您的 AdapterView,通常是一个 ListViewarg2 是在 ListView 中的位置。您可以从适配器中获取项目:

Object item = arg0.getItemAtPosition(arg2);

根据适配器中对象的类型,一个简单的解决方案是:

String value = item.toString();

谢谢,我很感激你的回复。 - Charles Lynch

2
您的监听器中的arg1参数是被点击项的视图。
假设您的ListView项目是TextViews,您可以尝试:
String itemText = ((TextView) arg1).getText();

1

使用字符串val =(String)arg0.getItemAtPosition(arg2)


0

对于 Kotlin,请使用以下内容:

mListView.setOnItemClickListener{ parent, view, position, id ->
        println("Item : " +  (view as TextView).text)
    }

这仅适用于您使用TextView填充了您的适配器,否则您应该通过执行类似以下操作来获取您的TextView,而不是将其转换为TextView:

view.findViewById(R.id.your_textview_id)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接