package org.runnerup.widget; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.HashSet; /** * Created by jonas on 9/18/14. */ @TargetApi(Build.VERSION_CODES.FROYO) public class DisabledEntriesAdapter extends BaseAdapter { String[] entries; LayoutInflater inflator; HashSet<String> disabled; public DisabledEntriesAdapter(Context ctx, int id) { inflator = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); entries = ctx.getResources().getStringArray(id); } public void addDisabled(int i) { if (disabled == null) disabled = new HashSet<String>(); if (i < entries.length) disabled.add(entries[i]); } public void clearDisabled() { if (disabled != null) disabled.clear(); } @Override public int getCount() { return entries.length; } @Override public Object getItem(int position) { if (position < entries.length) return entries[position]; return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { String str = (String) getItem(position); if (convertView == null) { convertView = inflator.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false); } TextView ret = (TextView) convertView.findViewById(android.R.id.text1); ret.setText(str); if (disabled != null && disabled.contains(str)) convertView.setEnabled(false); else convertView.setEnabled(true); return convertView; } @Override public boolean areAllItemsEnabled() { return disabled == null || disabled.size() == 0; } @Override public boolean isEnabled(int position) { if (disabled == null) return true; String str = (String) getItem(position); if (str == null) return true; if (disabled.contains(str)) return false; return true; } }