Cómo extraer el texto del elemento seleccionado en la listaVer

Tengo una lista con algunos elementos. Me gustaría obtener el texto del elemento seleccionado.

Aquí está mi adaptador de lista y el onItemClickListener:

ListView lv = (ListView)findViewById(R.id.listView1); lv.setAdapter(new ArrayAdapter( 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) { ?????? }}); } 

¿Podría decirme cómo obtener la cadena del elemento seleccionado?

el método (vista (TextView)) .getText () no funciona, tengo un

 ClassCastException: android.widget.LinearLayout 

He encontrado la solución, tal vez alguien la necesitará:

 ListView lv = (ListView)findViewById(R.id.listView1); lv.setAdapter(new ArrayAdapter( 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); }}); 

Utilizar esta:

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

Espero que ayude 🙂

Para esto, necesitas escribir lo siguiente:

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

Las otras respuestas se ven bien, pero pensé en I'd wrap everything en una respuesta completa.

Existen multiple ways de lograr esto y también depende de si obtiene texto de simple listView o de Custom ListView(with custom_list_item.xml).

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

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

Problema con otros Respuestas

@Android Killer string Casting no se encuentra.

@Rishi no da detalles sobre el uso de R.id.list_content

Aquí hay una referencia futura para cualquiera que tropiece con esto. En mi caso, tenía una clase de adaptador personalizado, con el tipo de clase POJO que tenía. También los artículos que quería pasar al adaptador y mostrar en mi ListView donde de la clase util.List .

Pasé con éxito los datos a ListView, pero también quería obtener el texto de la selección actual.

Por ejemplo: los datos que transmití eran una lista de las escuelas en las que enseñaba un profesor, por lo que tuvo que seleccionar la escuela en particular con la que deseaba trabajar en ese momento, y al iniciar sesión quise pasar una intención a una nueva Activity con el escuela actual que el profesor había seleccionado.

Por lo tanto mi 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); } } 

Espero que esto salve a alguien algún día, porque todas las soluciones aquí no funcionaron para mí. ¡Aclamaciones!

Definitivamente funciona! Espero que estés satisfecho!

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

Hola, estoy usando CustomListView con el menú de contexto registrado. En este caso, la forma de acceder a un elemento dentro de una fila de lista personalizada será:

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

Donde R.id.suItem es la vista de texto dentro de la Fila personalizada

PD: es mi primera publicación, espero que ayude 😉

Si está utilizando una lista para llenar el ListView en su método onItemClick ().

 String s = list.get(position); 

Debes poder acceder a esta lista dentro de la clase interna

intente hacerlo con esto, insértelo en onItemClickListener, no estoy seguro de cómo se ve su clase 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) { } 

Ver AdapterView …..— >>> la clase

Solo necesita hacer esto:

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

Mira … obtienes el TextView directamente

Prueba este código:

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