2011-09-06 19 views
5

Desidero aggiungere pulsante a ciascuna riga della mia listview. Ho creato un file XML chiamato row.xml nella mia cartella di layout e ho aggiunto due visualizzazioni testuali e un pulsante in quel file. Ma quando viene aggiunto un pulsante, non riesco a fare clic sull'oggetto di listview. Posso solo fare clic sul pulsante. Ecco row.xml:Aggiunta di pulsante a ciascuna riga in listview

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

voglio fare riferimento a textviews e pulsante nella mia attività. Per favore aiutami e suggerisci alcune idee.

risposta

1
+0

grazie amico. capito. ma come trovo il pulsante dal loro id come sono in row.xml e il mio file di layout principale è diverso. pls help – hussain

+0

@hussain: guarda la mia risposta modificata. – user370305

+0

button = (Button) view.findViewById (R.id.btn); Qui la vista è una vista del file rw.xml dopo averla gonfiata. – user370305

0

Si prega di controllare questo link ...

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

In questo pdf a pagina 104 , ha aggiunto un'immagine in ogni riga di una vista elenco. Lo sostituisci con il pulsante ..

Spero che questo risolva il tuo problema.

+0

104 ° pagina ?? non c'è pagina 104 inizia con pagina 153 – cc4re

+0

pagina di controllo 175. –

1

È possibile utilizzare un adattatore personalizzato (l'estensione di un adattatore di array è abbastanza semplice). Nel metodo getView, imposta un onClickListener sul tuo TextView, in questo modo il tuo pulsante e le altre parti di ListItem risponderanno al tocco.

1

Se volete sperimentare qualcosa di nuovo per il check problema LINK

Spero che questo sarà utile.

8

Ho avuto un problema simile. Il semplice trucco è aggiungere android:focusable="false" al tuo pulsante.

+0

Grazie. Finalmente ho trovato la soluzione che ha funzionato per me! La mia riga di visualizzazione elenco particolare ha due pulsanti, uno a sinistra e uno a destra. Quei due pulsanti funzionavano, ma quando ho cliccato in qualsiasi altro punto della riga, non chiamava il callback onItemSelected. – hellaandrew

+0

Non so perché ma non ha funzionato per me – fnc12

1

è necessario aggiungere attivabile = "false" e

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

l'adattatore

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

} 

e nella vostra attività è possibile creare un adattatore e implementare ascoltatore di pulsante.

Problemi correlati