title: How do I add an OnClickListener to a button inside a ListView adapter?
body: <p>I have a listview that contains the list of all my users. Every item from the list is a layout that has a button to show an AlertDialog to change the value of the label of the button. How can I dynamically add an on click event to that button that is generated by the listview Adapter?</p>
  
  <p>This is my adapter:</p>
  
  <pre><code>public class PerfilAdapter extends BaseAdapter {
  Context mContext;
  LayoutInflater mLayoutInflater;
  List&lt;PerfilBean&gt; listaPerfiles = new ArrayList&lt;PerfilBean&gt;();
  public Settings01 set=new Settings01();
  public PerfilAdapter(Context context,List&lt;PerfilBean&gt; lista) {
      mContext = context;
      mLayoutInflater = (LayoutInflater) mContext
              .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      listaPerfiles=lista;
  }
  @Override
  public int getCount() {
      // TODO Auto-generated method stub
      return listaPerfiles.size();
  }
  
  @Override
  public Object getItem(int position) {
      // TODO Auto-generated method stub
      return listaPerfiles.get(position);
  }
  
  @Override
  public long getItemId(int position) {
      // TODO Auto-generated method stub
      return position;
  }
  
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
      RelativeLayout itemView;
  
      if (convertView == null) {
          itemView = (RelativeLayout) mLayoutInflater.inflate(
                  R.layout.item_perfil, parent, false);
      } else {
          itemView = (RelativeLayout) convertView;
      }
      // obtengo los valores de la vista
      Button moneda = (Button) itemView.findViewById(R.id.Moneda);
      TextView titulo = (TextView) itemView.findViewById(R.id.Titulo);
      TextView nombredesc = (TextView) itemView.findViewById(R.id.txtNombre);
      TextView descripcion = (TextView) itemView.findViewById(R.id.txtDescripcion);
      String nombreM = Metodos.monedas[listaPerfiles.get(position).getPerfil_tipoMoneda()];
      moneda.setText(nombreM);
      titulo.setText(listaPerfiles.get(position).getPerfil_nombre());
      nombredesc.setText(listaPerfiles.get(position).getPerfil_nombreSec());
      descripcion.setText(listaPerfiles.get(position).getPerfil_texto());
  
      return itemView;
  
  }
  // metodo parahacer la vista de la celda
  
  
      public void actualizaDatosLista(List&lt;PerfilBean&gt; listaPerfilesM) {
          for(int i=0;i&lt;listaPerfilesM.size();i++){
              Log.d("ITEM "+i,listaPerfilesM.get(i).getPerfil_nombreSec());
          }
          listaPerfiles = listaPerfilesM;
          notifyDataSetChanged();
      }}
  </code></pre>
  
  <p>and this is my Activity:</p>
  
  <pre><code>public class Settings01 extends Activity implements OnClickListener {
  
  private List&lt;PerfilBean&gt; lst;
  private PerfilDAO perfildao;
  private PerfilAdapter perfiladapter;
  private ListView lstPerfiles;
  
  public void changeMoneda(final int position) {
      int x = 0;
  
      AlertDialog.Builder builder = new AlertDialog.Builder(Settings01.this);
      builder.setTitle("Seleccione Tipo de Distribuidor");
      builder.setItems(R.array.moneda, new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int item) {
              lst.get(position).setPerfil_tipoMoneda(item);
              perfiladapter = new PerfilAdapter(getApplicationContext(), lst);
              lstPerfiles.setAdapter(perfiladapter);
              dialog.dismiss();
          }
  
      });
      builder.create();
      builder.show();
  
  }
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.settings01);
      lstPerfiles = (ListView) findViewById(R.id.lstSettings);
      perfildao = new PerfilDAOImplDB(Settings01.this);
      lst = new ArrayList&lt;PerfilBean&gt;();
      lst = perfildao.getAll();
      perfiladapter = new PerfilAdapter(getApplicationContext(), lst);
      Log.d("Info", "En Settings");
      lstPerfiles.setAdapter(perfiladapter);
  
  
  
  }
  
  @Override
  public void onClick(View v) {
      Log.d("Info", "derp" + v.getId());
  
  }}
  </code></pre>
  
  <p>This is the layout that my adapter is currently using:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" &gt;
  
  &lt;TextView
      android:id="@+id/Titulo"
      android:layout_width="wrap_content"
      android:layout_height="40dp"
      android:layout_alignParentLeft="true"
      android:layout_marginLeft="150dp"
      android:gravity="left|center_vertical"
      android:textColor="@color/Negro"
      android:text="derp" /&gt;
  
  &lt;TextView
      android:id="@+id/lblTipoMoneda"
      android:layout_width="120dp"
      android:layout_height="40dp"
      android:layout_toLeftOf="@+id/Moneda"
      android:gravity="left|center_vertical"
      android:text="Tipo de moneda: " /&gt;
  
  &lt;Button
      android:id="@+id/Moneda"
      android:layout_width="160dp"
      android:layout_height="40dp"
      android:layout_alignParentRight="true"
      android:layout_marginRight="150dp"
      android:gravity="left|center_vertical"
      android:background="@color/Blanco"
      android:textColor="@color/Negro"
      android:text="Peso argentino" /&gt;
  
  &lt;ImageView
      android:id="@+id/Separador"
      android:layout_width="match_parent"
      android:layout_height="2.5dp"
      android:layout_below="@+id/Moneda"
      android:layout_marginLeft="150dp"
      android:layout_marginRight="150dp"
      android:background="@color/Negro" /&gt;
  
  &lt;TextView
      android:id="@+id/Nombre"
      android:layout_width="wrap_content"
      android:layout_height="40dp"
      android:layout_alignParentLeft="true"
      android:layout_below="@+id/Separador"
      android:layout_marginLeft="150dp"
      android:layout_marginTop="10dp"
      android:clickable="true"
      android:gravity="left|center_vertical"
      android:onClick="changeMoneda"
      android:text="Nombre :" /&gt;
  
  &lt;EditText
      android:id="@+id/txtNombre"
      android:layout_width="200dp"
      android:layout_height="40dp"
      android:layout_below="@+id/Separador"
      android:layout_marginTop="10dp"
      android:layout_toRightOf="@+id/Nombre"
      android:background="@drawable/fondotxt"
      android:textColor="@color/Negro"
      android:inputType="text" /&gt;
  
  &lt;TextView
      android:id="@+id/lblTitulo"
      android:layout_width="360dp"
      android:layout_height="24dp"
      android:layout_below="@+id/txtNombre"
      android:layout_marginTop="10dp" /&gt;
  
  &lt;EditText
      android:id="@+id/txtDescripcion"
      android:layout_width="match_parent"
      android:layout_height="200dp"
      android:layout_below="@+id/lblTitulo"
      android:layout_marginLeft="150dp"
      android:layout_marginRight="150dp"
      android:textColor="@color/Negro"
      android:gravity="left|center_vertical" /&gt;
  
  &lt;ImageView
      android:id="@+id/imgPicturefantes"
      android:layout_width="100dp"
      android:layout_height="150dp"
      android:layout_below="@+id/txtDescripcion"
      android:layout_toLeftOf="@+id/lblFotoAntes"
      android:src="@drawable/what" /&gt;
  
  &lt;ImageView
      android:id="@+id/imgPicturefdespues"
      android:layout_width="100dp"
      android:layout_height="150dp"
      android:layout_below="@+id/txtDescripcion"
      android:layout_marginLeft="50dp"
      android:layout_toRightOf="@+id/centerPoint"
      android:src="@drawable/what" /&gt;
  
  &lt;TextView
      android:id="@+id/lblFotoDespues"
      android:layout_width="120dp"
      android:layout_height="50dp"
      android:layout_below="@+id/txtDescripcion"
      android:layout_marginTop="50dp"
      android:layout_toRightOf="@+id/imgPicturefdespues"
      android:gravity="center"
      android:text="Foto despues: "
      android:textSize="18sp" /&gt;
  
  &lt;ImageButton
      android:id="@+id/btnDespuesF"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignTop="@+id/btnAntesF"
      android:layout_toRightOf="@+id/imgPicturefdespues"
      android:background="@drawable/btnupload" /&gt;
  
  &lt;TextView
      android:id="@+id/centerPoint"
      android:layout_width="2dp"
      android:layout_height="2dp"
      android:layout_below="@+id/txtDescripcion"
      android:layout_centerHorizontal="true" /&gt;
  
  &lt;TextView
      android:id="@+id/lblFotoAntes"
      android:layout_width="100dp"
      android:layout_height="50dp"
      android:layout_below="@+id/txtDescripcion"
      android:layout_marginRight="50dp"
      android:layout_marginTop="50dp"
      android:layout_toLeftOf="@+id/centerPoint"
      android:gravity="center"
      android:text="Foto antes: "
      android:textSize="18sp" /&gt;
  
  &lt;ImageButton
      android:id="@+id/btnAntesF"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/lblFotoAntes"
      android:layout_marginRight="75dp"
      android:layout_toLeftOf="@+id/centerPoint"
      android:background="@drawable/btnupload" /&gt;
  </code></pre>
  
  <p></p>