package com.geored.gui; import java.util.Hashtable; import java.util.List; import com.geored.rest.data.Categoria; import com.geored.rest.R; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.TextView; public class CategoriaAdapter extends ArrayAdapter<Categoria> { Context context; int layoutResourceId; List<Categoria> data; Hashtable<String, Categoria> cata = new Hashtable<String, Categoria>(); public CategoriaAdapter(Context context, int layoutResourceId, List<Categoria> data) { super(context, layoutResourceId, data); this.layoutResourceId = layoutResourceId; this.context = context; this.data = data; } public void add(Categoria categoria) { data.add(categoria); notifyDataSetChanged(); } public Categoria get(int pos) { return data.get(pos); } public Hashtable<String, Categoria> getSelected() { return cata; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View row = convertView; CategoriaHolder holder = null; if (row == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); row = inflater.inflate(layoutResourceId, parent, false); holder = new CategoriaHolder(); holder.chk = (CheckBox) row.findViewById(R.id.categoriacheckBox); holder.txt = (TextView) row.findViewById(R.id.txtNombreCategoria); row.setTag(holder); } else { holder = (CategoriaHolder) row.getTag(); } final Categoria categoria = data.get(position); holder.chk.setText(categoria.getNombre()); holder.txt.setText(categoria.getDescripcion()); holder.chk.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String pos = Integer.toString(position); if (cata.containsKey(pos)) { cata.remove(pos); } else { cata.put(pos, categoria); } } }); return row; } static class CategoriaHolder { CheckBox chk; TextView txt; } }