Evènement sur CheckBox de ListView
Bonjour,
Je developpe une app android. Je veux afficher un AlertDialog dont il contient une ListView. Cette derniere contient des CheckBox. L'objectif est de faire un Listener sur les CheckBox pour récupérer les éléments selectionnés. Le problème est que je n'arrive pas à atteindre mon objectif.
Voilà le code source pour l'affichage de l'AlertDialog:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| @Override
public void onClick(View arg0) {
switch(arg0.getId())
{
case R.id.btn_InviterAbonnes2 :
LayoutInflater factory2 = LayoutInflater.from(InterfaceReseau.this);
alertDialogView = factory2.inflate(R.layout.abonnesinvites, null);
listView2 = (ListView) alertDialogView.findViewById(R.id.listView8);
aa = new FancyAdapter();
listView2.setAdapter(aa);
adb = new AlertDialog.Builder(InterfaceReseau.this);
adb.setView(alertDialogView);
adb.setTitle("Inviter des abonnés");
adb.setIcon(android.R.drawable.ic_menu_add);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
} });
adb.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
} });
adb.show();
break;
}
} |
Voilà le reste du code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| class MyListAdapter extends SimpleAdapter
{
private LayoutInflater mInflater;
public MyListAdapter (Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to)
{
super (context, data, resource, from, to);
mInflater = LayoutInflater.from (context);
}
@Override
public Object getItem (int position)
{
return super.getItem (position);
}
@Override
public View getView (int position, View convertView, ViewGroup parent)
{
//Ce test permet de ne pas reconstruire la vue si elle est déjà créée
if (convertView == null)
{
convertView = mInflater.inflate (R.layout.contenulisteabonnesinvites, null);
// On récupère notre checkBox
CheckBox cb = (CheckBox) convertView.findViewById (R.id.checkBox1);
// On lui affecte un tag comportant la position de l'item afin de
// pouvoir le récupérer au clic de la checkbox
cb.setTag (position);
}
return super.getView (position, convertView, parent);
}
}
class FancyAdapter extends ArrayAdapter<Utilisateur>
{
public FancyAdapter() {
super(InterfaceReseau.this, android.R.layout.simple_list_item_1, listU);
// TODO Auto-generated constructor stub
}
public View getView(final int position, View convertView, ViewGroup parent)
{
final int pos = position;
ViewHolder holder;
if(convertView==null) {
LayoutInflater inflater = getLayoutInflater();
convertView = inflater.inflate(R.layout.contenulisteabonnesinvites, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.form((Utilisateur) listU.get(position));
return (convertView);
}
}
class ViewHolder {
public TextView login = null;
public CheckBox cb = null;
public Boolean cb1;
public ViewHolder(View view) {
login = (TextView) view.findViewById(R.id.textView55);
cb = (CheckBox) view.findViewById(R.id.checkBox1);
}
void form(Utilisateur i) {
login.setText(i.getLogin().toString());
}
} |
Merci pour votre aide.