android - programa - Cómo extraer el texto del elemento seleccionado en la listaVer
ocr (9)
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!
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<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) {
??????
}});
}
¿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<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);
}});
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 ;-)
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
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);
}});
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
Utilizar esta:
String selectedFromList = (lv.getItemAtPosition(position));
Espero que ayude :)
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);
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();
}
});
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