Newer
Older
package org.briarproject.android.identity;
import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import org.briarproject.R;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import static org.briarproject.android.identity.LocalAuthorItem.ANONYMOUS;
import static org.briarproject.android.identity.LocalAuthorItem.NEW;
public class LocalAuthorSpinnerAdapter extends BaseAdapter

Ernir Erlingsson
committed
implements SpinnerAdapter {
private final Context ctx;
private final boolean includeAnonymous;
private final List<LocalAuthorItem> list = new ArrayList<LocalAuthorItem>();

Ernir Erlingsson
committed
public LocalAuthorSpinnerAdapter(Context ctx, boolean includeAnonymous) {
this.ctx = ctx;
this.includeAnonymous = includeAnonymous;
}
public void add(LocalAuthorItem item) {
list.add(item);
}
public void clear() {
list.clear();
}
public int getCount() {
return includeAnonymous ? list.size() + 2 : list.size() + 1;
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View view;
if (convertView == null) {
LayoutInflater inflater =
(LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.dropdown_author, parent, false);
} else
view = convertView;
TextView name = (TextView) view.findViewById(R.id.nameView);
ImageView avatar =
(ImageView) view.findViewById(R.id.avatarView);
LocalAuthorItem item = getItem(position);
if (item == ANONYMOUS) {
name.setText(R.string.anonymous);
} else if (item == NEW) {
name.setText(R.string.new_identity_item);
} else {
name.setText(item.getLocalAuthor().getName());

Ernir Erlingsson
committed
avatar.setImageDrawable(new IdenticonDrawable(
}
public LocalAuthorItem getItem(int position) {
if (includeAnonymous) {
if (position == list.size()) return ANONYMOUS;
if (position == list.size() + 1) return NEW;
if (position == list.size()) return NEW;
return list.get(position);
}
}
public long getItemId(int position) {
return android.R.layout.simple_spinner_item;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = getDropDownView(position, convertView, parent);
Drawable d = ctx.getResources()
.getDrawable(R.drawable.ic_expand_more_black_24dp);
if (d != null) {
d.setColorFilter(
ctx.getResources().getColor(R.color.spinner_arrow),
PorterDuff.Mode.SRC_IN);
}
((TextView) view.findViewById(R.id.nameView))
.setCompoundDrawablesWithIntrinsicBounds(null, null, d, null);
return view;
public boolean isEmpty() {
return list.isEmpty();
}
public void sort(Comparator<LocalAuthorItem> comparator) {
Collections.sort(list, comparator);