2011-09-06 4 views
5

Je souhaite ajouter un bouton à chaque ligne de ma liste. J'ai créé un fichier XML appelé row.xml dans mon dossier de mise en page et ajouté deux textviews et un bouton dans ce fichier. Mais quand un bouton est ajouté, je suis incapable de cliquer sur l'élément de listview. Je suis seulement capable de cliquer sur le bouton. Voici row.xml:Ajout d'un bouton à chaque ligne de la liste

<?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" 
    > 


    <TextView 
     android:id="@+id/text11" 

     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:textSize="25sp" 
    android:textColor="#000000" 
     /> 
      <TextView 
     android:id="@+id/text2" 

     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:textSize="10sp" 
    android:textColor="#000000" 
     /> 
      <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
</LinearLayout> 

Je veux faire référence à textviews et bouton dans mon activité. Aidez-moi s'il vous plaît et suggérez quelques idées.

Répondre

1
+0

merci ami. je l'ai. mais comment puis-je trouver le bouton par leur id comme ils sont dans row.xml et mon fichier de mise en page principal est différent. pls help – hussain

+0

@hussain: regarde ma réponse éditée. – user370305

+0

button = (Bouton) view.findViewById (R.id.btn); Ici, view est l'affichage de votre fichier rw.xml après l'avoir gonflé. – user370305

0

S'il vous plaît vérifier ce lien ...

http://commonsware.com/Android/excerpt.pdf

Dans ce pdf à la page 104 , il a ajouté une image dans chaque rangée d'une vue de liste. Vous le remplacez avec le bouton ..

Espérons que cela résout votre problème.

+0

104e page ?? il n'y a pas de page 104 cela commence par la page 153 – cc4re

+0

vérifiez la page 175. –

1

Vous pouvez utiliser un adaptateur personnalisé (l'extension d'un adaptateur de matrice est relativement simple). Dans la méthode getView, définissez un onClickListener sur votre TextView, de cette façon votre bouton et les autres parties du ListItem répondront au toucher.

1

Si vous voulez expérimenter quelque chose de nouveau pour le problème vérification LINK

espère que ce sera utile.

8

J'ai eu un problème similaire. L'astuce consiste à ajouter android:focusable="false" à votre bouton.

+0

Merci. J'ai finalement trouvé la solution qui a fonctionné pour moi! Ma rangée de vue liste comporte deux boutons, un à gauche et un à droite. Ces deux boutons fonctionnaient, mais lorsque je cliquais n'importe où ailleurs dans la ligne, il n'appelait pas le rappel onItemSelected. – hellaandrew

+0

Dunno pourquoi mais n'a pas fonctionné pour moi – fnc12

1

vous devez ajouter focusable = "false" et vous pouvez

<Button 
     android:id="@+id/bt_do" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     **android:focusable="false"** /> 

dans votre adaptateur

public class MyAdapter extends BaseAdapter { 
    private Context context; 
    private List<Objet> objects; 
    private OnClickListener listener; 

    public MyAdapter(Context context, List<Objet> objects, 
      OnClickListener listener) { 
     this.context = context; 
     this.objects = objects; 
     this.listener = listener; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater infalInflater = ((Activity) context) 
        .getLayoutInflater(); 
      convertView = infalInflater.inflate(R.layout.my_line_list, null); 
     } 
     Button bt_do=(Button)convertView.findViewById(R.id.bt_do); 
     bt_do.setOnClickListener(listener); 
     return convertView; 

    } 

    @Override 
    public boolean hasStableIds() { 
     return true; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return objects.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return objects.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

} 

et dans votre activité de créer et mettre en œuvre un adaptateur d'écoute de bouton.

Questions connexes