Как извлечь текст из выбранного элемента в listView

У меня есть список с некоторыми элементами. Я хотел бы получить текст из выбранного элемента.

Вот мой адаптер списка и 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); }}); 

Solutions Collecting From Web of "Как извлечь текст из выбранного элемента в listView"

Использовать это:

 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 string Литье отсутствует.

@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: Это мой первый пост, надеюсь, это поможет 😉

Вот для будущих ссылок для тех, кто наткнулся на это. В моем случае у меня был пользовательский класс адаптера, с типом как класс 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); } } 

Надеюсь, это когда-нибудь сэкономит, потому что все решения здесь не работают для меня. Ура!

Это определенно работает! Надеюсь, ты доволен!

 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 для заполнения ListView в вашем методе onItemClick ().

 String s = list.get(position); 

Вы должны иметь доступ к этому списку внутри внутреннего класса

Попробуйте сделать это, вставьте его в 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); 
 public void onItemClick(**AdapterView**<?> parent, View view, int position, long id) { } 

См. AdapterView …..— >>> класс

Только нужно сделать это:

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

Смотрите … вы получаете TextView напрямую