package org.voxe.android.adapter;
import java.util.List;
import java.util.Set;
import org.voxe.android.R;
import org.voxe.android.model.Candidate;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import com.googlecode.androidannotations.annotations.EBean;
import com.googlecode.androidannotations.annotations.RootContext;
@EBean
public class SelectCandidatesAdapter extends BaseAdapter {
private List<Candidate> candidates;
private Set<String> selectedCandidateIds;
@RootContext
Context context;
public void init(List<Candidate> candidates, Set<String> selectedCandidateIds) {
this.candidates = candidates;
this.selectedCandidateIds = selectedCandidateIds;
}
@Override
public int getCount() {
return candidates.size();
}
@Override
public Candidate getItem(int position) {
return candidates.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
CheckBox checkbox;
if (convertView != null) {
imageView = (ImageView) convertView.getTag(R.id.candidateImage);
checkbox = (CheckBox) convertView.getTag(R.id.candidateCheckbox);
} else {
ViewGroup viewGroup = (ViewGroup) View.inflate(context, R.layout.select_candidates_list_item, null);
convertView = viewGroup;
imageView = (ImageView) viewGroup.findViewById(R.id.candidateImage);
checkbox = (CheckBox) viewGroup.findViewById(R.id.candidateCheckbox);
viewGroup.setTag(R.id.candidateImage, imageView);
viewGroup.setTag(R.id.candidateCheckbox, checkbox);
}
Candidate candidate = getItem(position);
CharSequence name = candidate.getName();
checkbox.setText(name);
candidate.insertPhoto(imageView);
checkbox.setChecked(selectedCandidateIds.contains(candidate.id));
return convertView;
}
public void updateCheckbox(View candidateView, Candidate candidate) {
if (candidateView != null) {
CheckBox checkbox = (CheckBox) candidateView.getTag(R.id.candidateCheckbox);
checkbox.setChecked(selectedCandidateIds.contains(candidate.id));
}
}
}