package what.whatandroid.forums.poll; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ProgressBar; import android.widget.TextView; import java.text.DecimalFormat; import api.forum.thread.Answer; import api.forum.thread.Poll; import what.whatandroid.R; /** * Adapter that displays a list of the poll answers */ public class AnswerAdapter extends ArrayAdapter<Answer> { private final LayoutInflater inflater; private final DecimalFormat percentFormat; private Poll poll; public AnswerAdapter(Context context, Poll poll){ super(context, R.layout.list_poll_answer); addAll(poll.getAnswers()); notifyDataSetChanged(); inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); percentFormat = new DecimalFormat("#.##"); this.poll = poll; } @Override public View getView(int position, View convertView, ViewGroup parent){ ViewHolder holder; if (convertView != null){ holder = (ViewHolder) convertView.getTag(); } else { convertView = inflater.inflate(R.layout.list_poll_answer, parent, false); holder = new ViewHolder(); holder.title = (TextView) convertView.findViewById(R.id.title); holder.voteBar = (ProgressBar) convertView.findViewById(R.id.vote_bar); convertView.setTag(holder); } Answer answer = getItem(position); if (poll.hasVoted()){ float percent = answer.getPercent().floatValue() * 100; holder.title.setText(answer.getAnswer() + " - " + percentFormat.format(percent) + "%"); holder.voteBar.setVisibility(View.VISIBLE); holder.voteBar.setProgress((int) (percent)); //De-activate any selected list item that we voted on convertView.setActivated(false); } else { holder.title.setText(answer.getAnswer()); holder.voteBar.setVisibility(View.GONE); } return convertView; } /** * Update the displayed vote counts by voting on a some answer * * @param answer answer to vote on, 0 = blank vote, actual answers * begin at 1 */ public void updateVotes(int answer){ poll.applyVote(answer); notifyDataSetChanged(); } private static class ViewHolder { public TextView title; public ProgressBar voteBar; } }