package org.intermine.app.adapter; /* * Copyright (C) 2015 InterMine * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. See the LICENSE file for more * information or http://www.gnu.org/copyleft/lesser.html. * */ import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import org.intermine.app.R; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; /** * @author Daria Komkova <Daria_Komkova @ hotmail.com> */ public class MinesAdapter extends BaseAdapter { private final Context mContext; private final LayoutInflater mLayoutInflater; private List<String> mMines = Collections.emptyList(); private Map<String, Boolean> mMinesToState = Collections.emptyMap(); public MinesAdapter(Context ctx) { mContext = ctx; mLayoutInflater = LayoutInflater.from(ctx); } public void updateMines(Map<String, Boolean> minesToState) { if (null != minesToState) { this.mMinesToState = minesToState; this.mMines = new ArrayList<>(minesToState.keySet()); } else { this.mMinesToState = Collections.emptyMap(); this.mMines = Collections.emptyList(); } notifyDataSetChanged(); } @Override public int getCount() { return mMinesToState.size(); } @Override public Object getItem(int position) { return mMines.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { final TextView title; CheckBox checkBox; if (null == convertView) { convertView = mLayoutInflater.inflate(R.layout.checkbox_list_item, parent, false); title = (TextView) convertView.findViewById(R.id.value); checkBox = (CheckBox) convertView.findViewById(R.id.checkbox); checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { mMinesToState.put(title.getText().toString(), isChecked); } }); convertView.setTag(R.id.value, title); convertView.setTag(R.id.checkbox, checkBox); } else { title = (TextView) convertView.getTag(R.id.value); checkBox = (CheckBox) convertView.getTag(R.id.checkbox); } String mine = (String) getItem(position); title.setText(mine); checkBox.setChecked(mMinesToState.get(mine)); return convertView; } public Map<String, Boolean> getMinesToState() { return mMinesToState; } }