package com.android.smap.adapters; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.smap.GatewayApp; import com.android.smap.R; import com.android.smap.api.models.Contact; import com.android.smap.api.models.Dialogue; import com.android.smap.di.DataManager; import com.android.smap.ui.VelocAdapter; import com.android.smap.ui.ViewQuery; import com.android.smap.utils.MWCommsUtils; import com.google.inject.Inject; import com.mjw.android.swipe.DistributionDetailsSwipeListener; import com.mjw.android.swipe.SwipeListView; import java.util.List; public class DialogueAdapter extends VelocAdapter implements DistributionDetailsSwipeListener.MultiSelectBackViewActionAdapter { private List<Dialogue> mModel; private SwipeListView mListViewRef; private DataManager mDataManager; @Inject public DialogueAdapter(Context context, List<Dialogue> model, SwipeListView ref) { super(context); this.mModel = model; this.mListViewRef = ref; mDataManager = GatewayApp.getDependencyContainer().getDataManager(); } @Override public View newView(LayoutInflater inflator, int position, ViewGroup parent) { return inflator.inflate(R.layout.item_survey_contact_slider, null, false); } @Override public void bindView(Context context, View view, ViewQuery query, int position) { // clean up choice selections when scrolling mListViewRef.recycle(view, position); Dialogue dialogue = getItem(position); Contact contact; String contactName, phoneNumber; if ((contact = dialogue.contact) != null) { contactName = contact.getName(); phoneNumber = contact.getNumber(); } else { contactName = ""; phoneNumber = ""; } String updatedAt = dialogue.updatedAt; int completed = dialogue.getQuestionNumber(); int total = dialogue.getSurvey().getNumberOfQuestions(); String template = getContext().getResources().getString( R.string.surveys_of_total); String totalCount = String.format(template, total); query.find(R.id.txt_name).text(contactName); query.find(R.id.txt_number).text("Ph: " + phoneNumber); query.find(R.id.txt_completed_progress).text(String.valueOf(completed)); query.find(R.id.txt_completed_total).text(totalCount); query.find(R.id.txt_timestamp).text(updatedAt); } @Override public int getCount() { return mModel.size(); } @Override public Dialogue getItem(int position) { return mModel.get(position); } public void setModel(List<Dialogue> model) { this.mModel = model; notifyDataSetChanged(); } @Override public void actionAllSelected(int[] pos) { for (int i : pos) { this.action(i); } } @Override public void action(int pos) { Dialogue dialogue = getItem(pos); mDataManager.removeContactFromDistribution( dialogue.contact.getId(), dialogue.getDistribution().getId()); mModel.remove(pos); notifyDataSetChanged(); } @Override public void onBackViewPressed(int position) { MWCommsUtils.call(getContext(), getItem(position).getContact().getNumber()); } }