package com.uservoice.uservoicesdk.ui;
import android.app.Activity;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.uservoice.uservoicesdk.R;
import java.util.List;
public class SpinnerAdapter<T> extends BaseAdapter {
private static int NONE = 0;
private static int OBJECT = 1;
private final List<T> objects;
private LayoutInflater inflater;
private int color;
public SpinnerAdapter(Activity context, List<T> objects) {
this.objects = objects;
inflater = context.getLayoutInflater();
TypedValue tv = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.textColorPrimary, tv, true);
color = context.getResources().getColor(tv.resourceId);
}
@Override
public int getCount() {
return objects.size() + 1;
}
@Override
public Object getItem(int position) {
if (position == 0)
return null;
return objects.get(position - 1);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getItemViewType(int position) {
return position == 0 ? NONE : OBJECT;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = convertView;
int type = getItemViewType(position);
if (view == null) {
view = inflater.inflate(android.R.layout.simple_list_item_1, null);
}
TextView textView = (TextView) view;
if (type == OBJECT) {
textView.setTextColor(color);
textView.setText(getItem(position).toString());
} else {
textView.setTextColor(Color.GRAY);
textView.setText(R.string.uv_select_none);
}
return view;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
int type = getItemViewType(position);
if (view == null) {
view = inflater.inflate(android.R.layout.simple_list_item_1, null);
}
TextView textView = (TextView) view;
if (type == OBJECT) {
textView.setTextColor(color);
textView.setText(getItem(position).toString());
} else {
textView.setTextColor(color);
textView.setText(R.string.uv_select_one);
}
return view;
}
}