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 !