Ver Mensaje Individual
  #1  
Viejo 16/04/14, 16:24:01
Array

[xs_avatar]
angelete1992 angelete1992 no está en línea
Miembro del foro
 
Fecha de registro: mar 2012
Mensajes: 134
Modelo de smartphone: LG Nexus 4
Tu operador: Movistar
No sé cómo detectar click en botón de ListView Personalizada

Hola a todos, estoy haciendo mi TFG y ahora mismo estoy con el caso de uso de añadir usuario como amigo.

Tengo un servidor con BBDD mySql y scripts PHP que utilizo como intermediario entre la aplicación y el servidor para insertar y recuperar datos.

Bien pues busqué por ahí y encontré un tutorial para hacer ListViews personalizados para que cada elemento de la lista tenga una imagen, un nombre y dos botones como puede verse en la siguiente captura:



Hasta ahí perfecto, pero ahora no sé cómo escuchar el click de los diferentes botones.

El listView personalizado lo defino con el siguiente layout:

Código:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/gray"
    android:orientation="horizontal" >
    
    <ImageView
        android:id="@+id/imageUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
    <TextView
        android:id="@+id/nameUser"
        android:textSize="20sp"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@id/imageUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    

    
    <Button
        android:id="@+id/fightButton"
        android:background="@drawable/button_fight"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
    <Button
        android:id="@+id/addUserButton"
        android:background="@drawable/button_tick"
        android:layout_toLeftOf="@id/fightButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>
El adapter es éste:

Código:
package com.angeljose.englishpursuit;

import java.util.ArrayList;

import com.angeljose.englishpursuit.SearchFriendActivity.asyncSearchFriend;

import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class AdapterFriends extends BaseAdapter{

	protected Activity activity;
	protected ArrayList<Friend> items;


	public AdapterFriends(Activity activity, ArrayList<Friend> items) {
	    this.activity = activity;
	    this.items = items;
	  }

	@Override
	public int getCount() {
		return items.size();
	}

	@Override
	public Object getItem(int arg0) {
		return items.get(arg0);
	}

	@Override
	public long getItemId(int position) {
		return items.get(position).getId();
	}

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

		// Generamos una convertView por motivos de eficiencia
		View v = convertView;

		//Asociamos el layout de la lista que hemos creado
		if(convertView == null){
			LayoutInflater inf = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			v = inf.inflate(R.layout.item_friend, null);
		}

		// Creamos un objeto Friend
		final Friend dir = items.get(position);
		//Rellenamos la fotografía
		ImageView foto = (ImageView) v.findViewById(R.id.imageUser);
		foto.setImageDrawable(dir.getFoto());
		//Rellenamos el nombre
		TextView nombre = (TextView) v.findViewById(R.id.nameUser);
		nombre.setText(dir.getNombre());
		//Rellenamos el boton
		 Button bAddUser = (Button) v.findViewById(R.id.addUserButton);
//
		 Button bFight = (Button) v.findViewById(R.id.fightButton);
		


		
		bFight.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				int position = (int) dir.id;
				// TODO Auto-generated method stub
				Log.d("clikando "+dir.id,"clikando");
				

				
			}
		});
		

	

		// Retornamos la vista
		return v;
	}


}
Y finalmente el método importante de la clase de la activity donde muestro estos listview:

Código:
		   ListView lista = (ListView) findViewById(R.id.listaFriends);

		   
		   if(matches>0){
			   
		        ArrayList<Friend> arraydir = new ArrayList<Friend>();
		        Button[] bAddFriend = new Button [matches];
		        Button[] bfight = new Button [matches];
		        Friend[] friendsT = new Friend[matches];
		        
		        for(int i=0; i<matches; i++){
		        	
		        	bAddFriend[i]= new Button(SearchFriendActivity.this);
		        	bfight[i]= new Button(SearchFriendActivity.this);
			        friendsT[i] = new Friend(getResources().getDrawable(R.drawable.user), friendsReturn[i], i);
			        arraydir.add(friendsT[i]);
		        	
		        }
		        
		        // Creo el adapter personalizado
		        AdapterFriends adapter = new AdapterFriends(SearchFriendActivity.this, arraydir);
		 
		        // Lo aplico
		        lista.setAdapter(adapter);
		   }
No sé que hacer porque no sé como obtener el objeto botón en la clase de la Activity para ponerle un listener.

Un saludo y gracias de antemano !
Imágenes Adjuntas
Tipo de Archivo: jpg 2014-04-16 14.13.13.jpg (50.6 KB, 107 visitas)
__________________
Aplicaciones y juegos android Superandroide.com
Responder Con Cita