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

Android 如何从listView上的选定项中提取文本,android,android-layout,Android,Android Layout,我有一个包含一些项目的列表视图。我想从所选项目中获取文本 以下是我的列表适配器和侦听器: ListView lv = (ListView)findViewById(R.id.listView1); lv.setAdapter(new ArrayAdapter<Country>( this,R.layout.list_black_text,R.id.list_content, values)); lv.setOnItemClickListen

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

以下是我的列表适配器和侦听器:

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) {
??????
    }});
        }
我已经找到了解决方案,也许有人会需要它:

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);

    }});
ListView lv=(ListView)findViewById(R.id.listView1);
低压设置适配器(新阵列适配器(
这个,R.layout.list_black_text,R.id.list_content,value));
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
TextView TextView=(TextView)view.findViewById(R.id.list\u content);
String text=textView.getText().toString();
System.out.println(“选择国家=:”+文本);
}});

如果您正在使用列表填充onItemClick()方法中的ListView

您需要能够在内部类中访问此列表,请使用以下命令:

String selectedFromList = (String) (lv.getItemAtPosition(position));
无论列表中的数据类型是什么,都要相应地强制转换


希望能有所帮助。:)

试着这样做,把它插入到你的监听器中,我不确定你的国家级是什么样子:

String s = values.get(position).getCountryName();
Log.e("LISTVIEW", "selected item text = "+s);

  or

String s = values.get(position).toString();
Log.e("LISTVIEW", "selected item text = "+s);

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

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);

}});
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
TextView TextView=(TextView)view.findViewById(R.id.list\u content);
String text=lv.get(position.toString().trim();
System.out.println(“所选国家=:”+文本);
}});

其他答案看起来不错,但我想
我应该把所有的问题都归纳成一个完整的答案

有多种方法可以实现这一点,这还取决于您是从
简单列表视图
还是从
自定义列表视图(带有自定义列表项.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
}});
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

}});
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
String text=lv.get(position.tostring().trim();//第一个方法
最终字符串text=((TextView)视图).getText();//第二个方法
}});
用于自定义列表视图

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
}});
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

}});
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
TextView TextView=(TextView)view.findViewById(R.id.list\u content);
//其中,list_content是listview_item.xml中TextView的id
}});
与他人的问题答案

@Android Killer
字符串转换丢失


@Rishi
没有给出关于使用R.id.list\u内容的详细信息

这里供任何偶然发现这一点的人参考。 在我的例子中,我有一个自定义适配器类,其类型与我的POJO类相同。还有我想传递到适配器并显示在
util.List
类的
ListView
中的项目

我成功地将数据传递到ListView,但还想获取当前选定的列表的文本

例如:我传递的数据是一个讲师所任教学校的列表,因此他必须选择他当时想要合作的特定学校,登录时我想通过讲师选择的当前学校传递一个新的
活动的意向

因此,我的ListView onClick()

private void loginsucess(){
progressDialog.disclose();
如果(mySchoolList.size()>1){
schoolsListView=新列表视图(MainActivity.this);
schoolsArrayAdapter=newschoolsistadapter(MainActivity.this,android.R.layout.simple\u list\u item\u 1,mySchoolsList);
setAdapter(schoolslaryadapter);
dialog=新建对话框(MainActivity.this);
对话框.setContentView(schoolsListView);
setTitle(“欢迎”+staff.getFullName());
dialog.show();
schoolsListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//.getName()是从学校POJO类访问的。
字符串schoolName=schoolsArrayAdapter.getItem(位置).getName();
意图=新意图(MainActivity.this、NavMainActivity.class);
意图。putExtra(“sentinent”,学名);
星触觉(意向);
}
});
}否则{
意图=新意图(MainActivity.this、NavMainActivity.class);
intent.putExtra(“sentinent”,recieveName);
星触觉(意向);
}
}

希望有一天这能拯救一些人,因为这里所有的解决方案都不适合我。干杯

它肯定会起作用的!希望您满意

ListView lv=(ListView)findViewById(R.id.listView1);

lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        String text = (String) lv.getItemAtPosition(arg2);
        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();

    }
});
ListView lv=(ListView)findViewById(R.id.listView1);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
//TODO自动生成的方法存根
String text=(String)lv.getItemAtPosition(arg2);
Toast.makeText(getApplicationContext(),text,Toast.LENGTH_SHORT).show();
}
});

您好,我正在使用带有注册上下文菜单的CustomListView。在这种情况下,访问自定义列表行内项目的方式为:

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
        case R.id.add:
                TextView textView = (TextView) info.targetView.findViewById(R.id.yourItem);
                String text = textView.getText().toString();
                Toast.makeText(getApplicationContext(), "Selected " + text, Toast.LENGTH_LONG).show(); 
        default:
                return super.onContextItemSelected(item);
    }
}
其中R.id.yourItem是自定义行中的文本视图

附:这是我的第一篇文章,希望能有所帮助;-)

请参见…您可以直接获得
文本视图

请尝试以下代码:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         Toast.makeText(getApplicationContext(),(String)parent.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
     }
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(getApplicationContext(),(String)parent.getIte
public void onItemClick(**AdapterView**<?> parent, View view, 
                                            int position, long id) {

 }
  TextView selectedText=(TextView) parent.findViewById(R.id.textView2);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         Toast.makeText(getApplicationContext(),(String)parent.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
     }
});
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> av,
                                View view, int position, long l) {
            String text = String.valueOf(myListView.getItemAtPosition(position));

            }
        }
    });
@Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            TextView text1 = (TextView) findViewById(R.id.Text1);
            TextView text2 = (TextView) findViewById(R.id.Text2);

            String txt_1 = ""+text1.getText().toString().trim();
            String txt_2 = ""+text2.getText().toString().trim();

           //Other_Related_Work

        }
    });
 <TextView
    <!-- rest of the code -->
    android:id="@+id/content"
    android:onClick="get_content"  <!-- Just add this -->
    />
public void get_content(View view){

    TextView textView = view.findViewById(R.id.content);
    System.out.println("Text is: "+textView.getText().toString());
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myFamily);

    listViewDemo.setAdapter(arrayAdapter);

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

            //String nameSelectedfromList = arrayAdapter.getItem(position).toString();
            String nameSelectedfromList = listViewDemo.getItemAtPosition(position).toString();

            Log.i("Clicked Item", nameSelectedfromList);

        }
    });