如何从列表视图中select的项目中提取文本

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

这是我的列表适配器和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) { ?????? }}); } 

你能告诉我如何从选定的项目获得string。

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

 ClassCastException: android.widget.LinearLayout 

我find了解决办法,也许有人会需要它:

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

用这个:

 String selectedFromList = (lv.getItemAtPosition(position)); 

希望它会有所帮助。 🙂

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

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

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

multiple ways可以实现这一点,也取决于您是从simple listView还是从Custom ListView(with custom_list_item.xml).获取文本Custom ListView(with custom_list_item.xml).

对于简单的ListView

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

对于自定义ListView

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

与他人问题的答案

@Android KillerstringCasting失踪。

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

你好我正在使用一个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是自定义行中的textView

PS:这是我的第一篇文章,希望它有帮助;-)

任何人都会遇到这个问题,以供将来参考。 在我的情况下,我有一个自定义的适配器类,types为我有一个POJO类。 此外,我想传递给适配器的项目,并显示在我的ListView util.List类的地方。

我成功地将数据传递给ListView,但也想获取当前选中的文本。

例如:我通过的数据是一个讲师所教授的学校名单,所以他当时必须select他想要工作的学校,而且在login时,我想把意图传递给一个新的Activity讲师select的当前学校。

因此我的ListView onClick()

 private void loginSuccess() { progressDialog.dismiss(); if (mySchoolsList.size() > 1) { schoolsListView = new ListView(MainActivity.this); schoolsArrayAdapter = new SchoolListAdapter(MainActivity.this, android.R.layout.simple_list_item_1, mySchoolsList); schoolsListView.setAdapter(schoolsArrayAdapter); dialog = new Dialog(MainActivity.this); dialog.setContentView(schoolsListView); dialog.setTitle("Welcome " + staff.getFullName()); dialog.show(); schoolsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //the .getName() is accessed from the School POJO class. String schoolName = schoolsArrayAdapter.getItem(position).getName(); intent = new Intent(MainActivity.this, NavMainActivity.class); intent.putExtra("sentIntent", schoolName); startActivity(intent); } }); } else { intent = new Intent(MainActivity.this, NavMainActivity.class); intent.putExtra("sentIntent", recieveName); startActivity(intent); } } 

希望有一天能挽救某个人,因为这里的所有解决scheme都不适合我。 干杯!

它将最初的工作!希望你满意!

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

如果您使用List来填充onItemClick()方法中的ListView。

 String s = list.get(position); 

你需要能够在内部类访问这个列表

尝试这样做,插入到onItemClickListener,我不知道你的国家类是什么样子:

 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); 
 public void onItemClick(**AdapterView**<?> parent, View view, int position, long id) { } 

看到AdapterView …..— >>>这个类

只需要这样做:

  TextView selectedText=(TextView) parent.findViewById(R.id.textView2); 

看…你直接得到TextView