Comment extraire le texte de l'élément sélectionné dans listView
J'ai un listview avec quelques éléments. Je voudrais obtenir le texte de l'élément sélectionné.
Voici mon adaptateur de liste et le 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) {
??????
}});
}
Pourriez-vous me dire comment obtenir la chaîne de l'élément sélectionné?
La méthode ((TextView) vue).getText() ne fonctionne pas, j'ai un
ClassCastException: android.widget.LinearLayout
, j'ai trouvé la solution, peut-être que quelqu'un en aura besoin:
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);
}});
10 réponses
Utilisez ceci:
String selectedFromList = (lv.getItemAtPosition(position));
J'espère que cela aidera. :)
Pour cela, vous devez écrire ce qui suit:
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);
}});
Les autres réponses semblent bonnes, mais j'ai pensé I'd wrap everything
en une réponse complète.
Il y a multiple ways
pour y parvenir et cela dépend aussi si vous obtenez du texte de simple listView
ou de Custom ListView(with custom_list_item.xml).
Pour La 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
}});
Pour ListView Personnalisé
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
}});
Problème avec les autres Réponses
@Android Killer
La Coulée de cordes est manquante.
@Rishi
ne donne pas de détails sur L'utilisation de R. id. list_content
Voici pour référence future pour tous ceux qui trébuchent sur cela.
Dans mon cas, j'avais une classe d'adaptateur personnalisée, avec le type comme classe POJO que j'avais. Aussi les éléments que je voulais passer à l'adaptateur et afficher dans mon ListView
où de la classe util.List
.
J'ai passé avec succès les données à ListView, mais je voulais aussi obtenir le texte de la liste actuellement sélectionnée.
Par exemple: les données que j'ai transmises étaient une liste d'écoles où un conférencier enseignait, alors il devait sélectionner l'école particulière qu'il je voulais travailler avec à ce moment - là, et en me connectant, je voulais passer une intention à un nouveau Activity
avec l'école actuelle que le conférencier avait sélectionnée.
Ainsi mon 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);
}
}
J'espère que cela sauvera quelqu'un un jour, parce que toutes les solutions ici n'ont pas fonctionné pour moi. À votre santé!
Il sera définitivement fonctionne!Espoir vous Satisfait!
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();
}
});
Bonjour, j'utilise un CustomListView avec un Menu contextuel enregistré. Dans ce cas, le moyen d'accéder à un élément dans une ligne de liste personnalisée sera:
@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);
}
}
Où R. id. yourItem est le textView dans la ligne personnalisée
PS: c'est mon premier post, J'espère que ça aide ; -)
Si vous utilisez une liste pour remplir ListView dans votre méthode onItemClick ().
String s = list.get(position);
Vous devez pouvoir accéder à cette liste dans la classe interne
Essayez de le faire par ceci, insérez-le dans onItemClickListener, Je ne suis pas sûr à quoi ressemble votre classe de pays:
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) {
}
Voir le AdapterView
.....--->>>la classe
Seulement besoin de faire ceci:
TextView selectedText=(TextView) parent.findViewById(R.id.textView2);
Voir...vous obtenez le TextView
directement
Essayez ce code:
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();
}
});