Question

Je viens de commencer à jouer avec Android et j'ai suivi un tutoriel de mise en page sur la personnalisation d'une mise en page ListView sur cette site .

Étant donné que toute la liste sont alimentées par des tableaux et partagent tous le même id -> (R.id.ListViewId), je me demandais que comment puis-je mettre en œuvre un auditeur onItemClick sur chaque couleur? Je suis en train de créer une activité pour chaque couleur, comme par exemple, si je clique sur Red, il va commencer une nouvelle activité, et si je clique sur bleu, il va commencer une autre activité, etc.

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
    <ListView
       android:id="@+id/ListViewId"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>
</LinearLayout>

Java

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ColorList extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String[] items = {"red", "blue","green"};

        ListView listView = (ListView) findViewById(R.id.ListViewId);
        listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
    }
}

est ce que j'ai essayé .... mais je ne peux pas comprendre comment le faire ... des idées? S'il vous plaît.

        ListView listView = (ListView) findViewById(R.id.ListViewId);
        listView.setAdapter(new UserItemAdapter(this, android.R.layout.simple_list_item_1, users));
        listView.setTextFilterEnabled(true);
        listView.setOnItemClickListener(new OnItemClickListener() {

          @Override
          public void onItemClick(AdapterView<?> a, View v, int pos, long id){
              // some code here to start a new activity
              // the code below is just for testing, on click it will show a NullPointerException error
              Object o = null;
              o.toString();
          }
      });
Était-ce utile?

La solution

Votre onItemClick est fourni à la fois la vue elle-même et la position dans la liste; vous devez utiliser un de ces pour déterminer les informations que vous souhaitez. Dans votre exemple, tout simplement, la position sera de 0, 1 ou 2 pour « rouge », « bleu » et « vert ». Dans un exemple plus compliqué, vous pouvez passer outre la création de la vue dans votre code et vous pouvez utiliser setTag () pour fixer les détails que vous devrez peut-être plus tard (si la position ne suffit pas).

Autres conseils

Vous avez Object o = null; o.toString();. Qui vous donne votre pointeur nul. Débarrassez-vous de cela et vous serez en mesure de mettre dans un code réel.

Consultez ce tutoriel sur la façon de travailler avec les cliquez sur écoute.

Essayez d'écouter à onListItemClick, au lieu de onItemClick.

En onItemClick() utiliser le View et obtenir le texte ...

String colourString = ((TextView) v).getText();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top