2014-07-21 3 views
2

Dans l'élément de liste, il y a deux boutons buton1 et button2.
Sur le bouton 1, cliquez sur le bouton 2 de cette ligne uniquement. Cela a été réalisé en définissant l'instance de button2 comme la balise button1, puis sur onClickListener de button1 en obtenant button1 en utilisant getTag et en changeant sa visibilité.
Q1: Existe-t-il une méthode plus optimale pour ce faire?
Q2: En mode de défilement, puisque j'utilise un motif de support de vue et que je réutilise les lignes, le bouton2 qui est affiché ailleurs dans certaines lignes de la liste se ferme.
Vues de la disposition des éléments de liste afficher masquer

Quelqu'un?

Répondre

1

Vous devez le gérer dans le rappel getView de l'adaptateur. Quelque chose comme:

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

    View v = convertView; 

    LayoutInflater vi; 
    vi = LayoutInflater.from(getContext()); 
    v = vi.inflate(R.layout.itemlistrow, null); 
    Button button1 = (Button) v.findViewById(R.id.button1); 
    Button button2 = (Button) v.findViewById(R.id.button2); 
    button1.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) 
     { 
      button2.setVisibility(View.VISIBLE); 
     } 
    }); 


    return v; 

} 
+0

salut, l'exemple ci-dessus dowsnt répondre à ma deuxième question Q2: Sur défilement, depuis que je suis en utilisant modèle de support de vue et de réutiliser les lignes, la Bouton2 qui est montré ailleurs dans quelques lignes dans la liste obtient fermé. – chaitanyad

+0

et je devrais déclarer button2 comme final pour l'utiliser dans l'auditeur. Est-ce ce que l'on voulait dire? – chaitanyad

Questions connexes