我有一些包含一些项目的列表视图。我想从所选项目中获取文本。
这是我的列表适配器和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) {
??????
}});
}
请告诉我如何从所选项目中获取字符串。
方法((TextView)视图).getText()不起作用,我有一个
ClassCastException: android.widget.LinearLayout
我找到了解决方案,也许有人会需要它:
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);
}});
答案 0 :(得分:61)
使用此:
String selectedFromList = (lv.getItemAtPosition(position));
希望它会有所帮助。 :)
答案 1 :(得分: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);
}});
答案 2 :(得分:3)
其他答案看起来不错,但我认为I'd wrap everything
有一个完整的答案。
有multiple ways
来实现此目标,这还取决于您是从simple listView
还是从Custom ListView(with custom_list_item.xml).
对于Simple 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
}});
对于自定义列表视图
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
字符串Casting缺失。
@Rishi
未提供有关使用R.id.list_content
答案 3 :(得分:3)
您好我正在使用带注册上下文菜单的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是自定义行
中的textViewPS:这是我的第一篇文章,希望它有所帮助; - )
答案 4 :(得分:2)
以下是任何偶然发现此问题的人的参考资料。
在我的情况下,我有一个自定义适配器类,类型为我有的POJO类。此外,我想传递给适配器的项目显示在ListView
类的util.List
中。
我成功将数据传递给ListView,但也想获取当前所选文本。
例如:我传递的数据是讲师讲授的学校名单,所以他必须选择当时想要合作的特定学校,并登录我想要的将意图传递给讲师所选择的当前学校的新Activity
。
因此我的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);
}
}
希望有一天能拯救某人,因为这里的所有解决方案都不适合我。干杯!
答案 5 :(得分:2)
它肯定会有效!希望你满意!
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();
}
});
答案 6 :(得分:0)
如果您使用List在onItemClick()方法中填充ListView。
String s = list.get(position);
您需要能够在内部类
中访问此列表答案 7 :(得分:0)
尝试这样做,将其插入onItemClickListener,我不确定你的Country类是什么样的:
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);
答案 8 :(得分:0)
public void onItemClick(**AdapterView**<?> parent, View view,
int position, long id) {
}
请参阅AdapterView
.....---&gt;&gt;&gt;类
只需要这样做:
TextView selectedText=(TextView) parent.findViewById(R.id.textView2);
请参阅...您直接获得TextView
答案 9 :(得分:0)
尝试以下代码:
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();
}
});
答案 10 :(得分:0)
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av,
View view, int position, long l) {
String text = String.valueOf(myListView.getItemAtPosition(position));
}
}
});
答案 11 :(得分:0)
就这么简单
enum
答案 12 :(得分:0)
我找到了最简单的方法:
list_content.xml
<TextView
<!-- rest of the code -->
android:id="@+id/content"
android:onClick="get_content" <!-- Just add this -->
/>
MainActivity
public void get_content(View view){
TextView textView = view.findViewById(R.id.content);
System.out.println("Text is: "+textView.getText().toString());
}
答案 13 :(得分:0)
这对我有用。我在这里尝试了一些解决方案,但没有用。希望这会有所帮助。
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);
}
});