package com.android.smap.adapters; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import com.android.smap.R; import com.android.smap.api.models.Distribution; import com.android.smap.ui.VelocAdapter; import com.android.smap.ui.ViewQuery; import com.google.inject.Inject; import java.util.List; public class DistributionAdapter extends VelocAdapter { private List<Distribution> mModel; private float mProgressBarTotal; @Inject public DistributionAdapter(Context context, List<Distribution> model) { super(context); this.mModel = model; mProgressBarTotal = getContext() .getResources().getDimension(R.dimen.survey_progress_width); } @Override public View newView(LayoutInflater inflator, int position, ViewGroup parent) { return inflator.inflate(R.layout.item_distribution, null, false); } @Override public void bindView(Context context, View view, ViewQuery query, int position) { Distribution distribution = mModel.get((position)); String distributionName = distribution.getName(); int totalDialogue = distribution.getMembersCount(); int completedDialogue = distribution.getCompletedCount(); float completionPercent = distribution.getCompletionPercentage(); query.find(R.id.txt_name).text(distributionName); // String formatting String template = getContext().getResources().getString( R.string.template_quotient); String progress = String.format(template, completedDialogue, totalDialogue); query.find(R.id.txt_member_progress).text(String.valueOf(progress)); //Setting progress bar View progressBar = query.find(R.id.view_progress).get(); LayoutParams params = progressBar.getLayoutParams(); params.width = (int) (mProgressBarTotal * completionPercent/100); if(params.width == 0) params.width = (int) (mProgressBarTotal * 0.01); //Shows some green progressBar.setLayoutParams(params); } @Override public int getCount() { return mModel.size(); } @Override public Distribution getItem(int position) { if(mModel != null){ return mModel.get(position); } return null; } public void setModel(List<Distribution> model) { this.mModel = model; notifyDataSetChanged(); } }