如何从列表视图中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 Killer
stringCasting失踪。
@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