package io.github.javiewer.adapter; import android.content.Context; import android.support.annotation.IdRes; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import io.github.javiewer.R; /** * Project: JAViewer */ public class NavigationSpinnerAdapter<T> extends ArrayAdapter<T> { private final LayoutInflater mLayoutInflater; public NavigationSpinnerAdapter(@NonNull Context context, @LayoutRes int resource) { this(context, resource, 0, new ArrayList<T>()); } public NavigationSpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId) { this(context, resource, textViewResourceId, new ArrayList<T>()); } public NavigationSpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull T[] objects) { this(context, resource, 0, Arrays.asList(objects)); } public NavigationSpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull T[] objects) { this(context, resource, textViewResourceId, Arrays.asList(objects)); } public NavigationSpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List<T> objects) { this(context, resource, 0, objects); } public NavigationSpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull List<T> objects) { super(context, resource, textViewResourceId, objects); mLayoutInflater = LayoutInflater.from(context); } @Override public View getDropDownView(int position, @Nullable View view, @NonNull ViewGroup parent) { if (view == null || !view.getTag().toString().equals("DROPDOWN")) { view = mLayoutInflater.inflate(R.layout.view_drop_down, parent, false); view.setTag("DROPDOWN"); } TextView textView = (TextView) view.findViewById(R.id.dropdown_text); textView.setText(getItem(position).toString()); return view; } }