42 votes

Comment extraire le texte de l'élément sélectionné sur la listeView

J'ai une liste 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 s'il vous plaît comment obtenir la chaîne de l'élément sélectionné.

la méthode ((TextView) view).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);

    }});

67voto

Android Killer Points 7600

Utilisez ceci:

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

Quel que soit le type de données que vous avez dans votre liste, effectuez un cast en conséquence.

J'espère que cela aidera. :)

16voto

Rishi Points 967

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

}});

3voto

Guille Points 31

Bonjour, j'utilise un CustomListView avec un menu contextuel enregistré. Dans ce cas, la manière 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 à l'intérieur de la ligne personnalisée

PS : c'est mon premier post, j'espère que ça t'aidera ;-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X