如何从listView上的选定项中提取文本

Mil*_*loš 42 android android-layout

我有一些包含一些项目的列表视图.我想从所选项目中获取文本.

这是我的列表适配器和onItemClickListener:

ListView lv = (ListView)findViewById(R.id.listView1);
    lv.setAdapter(new ArrayAdapter<Country>(
            this,R.layout.list_black_text,R.id.list_content, values));


    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
??????
    }});
        }
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何从所选项目中获取字符串.

方法((TextView)视图).getText()不起作用,我有一个

ClassCastException: android.widget.LinearLayout
Run Code Online (Sandbox Code Playgroud)

我找到了解决方案,也许有人会需要它:

ListView lv = (ListView)findViewById(R.id.listView1);
    lv.setAdapter(new ArrayAdapter<Country>(
            this,R.layout.list_black_text,R.id.list_content, values));

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
            TextView textView = (TextView) view.findViewById(R.id.list_content);
            String text = textView.getText().toString(); 
            System.out.println("Choosen Country = : " + text);

    }});
Run Code Online (Sandbox Code Playgroud)

And*_*ler 63

用这个:

String selectedFromList = (lv.getItemAtPosition(position));
Run Code Online (Sandbox Code Playgroud)

希望它会有所帮助.:)

  • 如果您只是将字符串放入适配器中,那么执行上述操作应该没有问题,只需将其转换为字符串以避免任何错误.String alloy =(String)lv.getItemAtPosition(position); (2认同)
  • 编辑:`String selectedFromList =(String)lv.getItemAtPosition(position);` (2认同)

Ris*_*shi 14

为此,您需要编写以下内容:

lv.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        TextView textView = (TextView) view.findViewById(R.id.list_content);
        String text = lv.get(position).toString().trim();
        System.out.println("Chosen Country = : " + text);

}});
Run Code Online (Sandbox Code Playgroud)


Xar*_*mer 5

其他答案看起来不错,但我想到I'd wrap everything了一个完整的答案。

multiple ways实现这一点,这也取决于你是否是从获取文本simple listViewCustom ListView(with custom_list_item.xml).

对于简单的列表视图

lv.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        String text = lv.get(position).tostring().trim();//first method 
        final String text = ((TextView)view).getText();// second method
}});
Run Code Online (Sandbox Code Playgroud)

对于自定义列表视图

lv.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        TextView textView = (TextView) view.findViewById(R.id.list_content);
//where list_content is the id of TextView in listview_item.xml

}});
Run Code Online (Sandbox Code Playgroud)

与他人的问题 答案

@Android Killer 缺少字符串转换。

@Rishi 没有提供有关使用 R.id.list_content 的详细信息