2013-04-02 3 views
5

J'ai fait un listView personnalisé pour mon application android, et j'ai un problème à créer des onClickListeners séparés pour des parties séparées de l'article. Mon article a une image et un texte. Ce que je veux, c'est commencer différentes activités en fonction de ce qui a été cliqué.Comment définir onClickListener pour des parties séparées d'un élément listView personnalisé? [Android]

Cette méthode onClick() devrait démarrer une activité qui rend impossible la définition de la méthode getView() de ma classe DataBinder. (DataBinder infecte ma liste avec une disposition personnalisée)

Une aide?

Merci!

Répondre

9

Dans votre méthode ListAdapter'sgetView personnalisée, vous devez ajouter onClickListeners aux différentes sous-vues que vous souhaitez voir appliquer aux clics.

Un exemple sur la façon de mettre en œuvre la méthode getView:

class CustomListAdapter extends ArrayAdapter<String> implements OnClickListener { 

    public CustomListAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 

     TextView tv = (TextView) v.findViewById(R.id.textView1); 
     tv.setOnClickListener(this); 

     ImageView iv = (ImageView) v.findViewById(R.id.imageView1); 
     iv.setOnClickListener(this); 

     return super.getView(position, convertView, parent); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.textView1: 
      // Do stuff accordingly... 
      break; 
     case R.id.imageView1: 
      // Do stuff when imageView1 is clicked... 
     default: 
      break; 
     } 
    } 
} 
+0

Je vais essayer de revenir avec quelques commentaires :) –

+0

Celui-ci a travaillé :) –

1

Il n'est pas impossible de définir des méthodes onClick() distinctes pour le ImageView et le TextView dans votre élément de liste. C'est exactement ce que vous devez faire au lieu d'utiliser le gestionnaire onClick() pour votre ListView.

Implémentez les méthodes onClick() dans le getView() de votre adaptateur pour chaque élément.

0

Une option serait d'inclure une méthode onClick pour les éléments séparés. En supposant que vous avez construit la ligne personnalisée en XML, il est simple d'ajouter une méthode dans le champ onClick, de définir cet élément (disons une image) pour autoriser les clics (si ce n'est déjà fait) et de définir la méthode dans votre classe . Ensuite, si la ligne est cliquée, le gestionnaire de clics clickdown se déclenche, mais si l'élément est cliqué (l'image), sa propre méthode onClick est déclenchée.

Questions connexes