/** * Copyright (c) 2015 unfoldingWord * http://creativecommons.org/licenses/MIT/ * See LICENSE file for details. * Contributors: * PJ Fechner <pj@actsmedia.com> */ package adapters; import android.content.Context; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import org.unfoldingword.mobile.R; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; import model.daoModels.Version; import model.parsers.MediaType; //import android.widget.IconTextView; /** * Created by Fechner on 7/8/15. */ public class ResourceChoosingAdapter extends ArrayAdapter<ResourceChoosingAdapter.ResourceChoosingAdapterProtocol> { private List<ResourceChoosingAdapterProtocol> objects; private List<Boolean> selectionsList; public ResourceChoosingAdapter(Context context, List<ResourceChoosingAdapterProtocol> objects) { super(context, R.layout.row_resource_choosing, objects); this.objects = objects; seedSelections(); } private void seedSelections(){ selectionsList = new ArrayList<>(); for(int i = 0; i < objects.size(); i++){ selectionsList.add(i, false); } } public List<ResourceChoosingAdapterProtocol> getObjects() { return objects; } @Override public View getView(int position, View view, ViewGroup parent) { final ResourceChoosingAdapterProtocol currentRow = getItem(position); ViewHolderForGroup holder = null; if (view == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.row_resource_choosing, parent, false); holder = new ViewHolderForGroup(position, view); view.setTag(holder); } else { holder = (ViewHolderForGroup) view.getTag(); } holder.setIndex(position); holder.labelTextView.setText(currentRow.getName()); Drawable iconImage = currentRow.getImage(); if(iconImage != null) { holder.iconView.setImageDrawable(currentRow.getImage()); } holder.iconView.setVisibility((iconImage != null)? View.VISIBLE : View.INVISIBLE); return view; } public boolean hasSelectedIndex(int index){ return selectionsList.get(index); } private class GroupClickListener implements View.OnClickListener{ ViewHolderForGroup group; public GroupClickListener(ViewHolderForGroup group) { this.group = group; } @Override public void onClick(View v) { group.toggleChecked(); } } protected class ViewHolderForGroup { boolean checked = false; GroupClickListener clickListener; private int index; @Bind(R.id.row_resource_choosing_title) protected TextView labelTextView; @Bind(R.id.row_resource_choosing_icon) protected ImageView iconView; @Bind(R.id.row_resource_choosing_check_mark) protected ImageView checkMarkView; public ViewHolderForGroup(int index, View view) { this.index = index; ButterKnife.bind(this, view); clickListener = new GroupClickListener(this); view.setOnClickListener(clickListener); updateCheckMark(); } public void setIndex(int index) { this.index = index; } void toggleChecked(){ checked = !checked; selectionsList.set(index, checked); updateCheckMark(); } void updateCheckMark(){ checkMarkView.setImageResource((checked)? R.drawable.checkbox_selected : R.drawable.checkbox); } } public interface ResourceChoosingAdapterProtocol { Version getVersion(); String getName(); Drawable getImage(); MediaType getType(); } }