package cl.monsoon.s1next.binding;
import android.content.Context;
import android.databinding.BindingAdapter;
import android.os.Build;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.List;
import cl.monsoon.s1next.R;
import cl.monsoon.s1next.view.adapter.ArrayAdapterCompat;
public final class SpinnerBindingAdapter {
private SpinnerBindingAdapter() {}
@BindingAdapter({"dropDownItemList", "selectedItemPosition"})
public static void setForumGroupNameList(Spinner spinner, List<CharSequence> dropDownItemList, int selectedItemPosition) {
spinner.setAdapter(getSpinnerAdapter(spinner, dropDownItemList));
// invalid position may occurs when user's login status has changed
if (spinner.getAdapter().getCount() - 1 < selectedItemPosition) {
spinner.setSelection(0, false);
} else {
spinner.setSelection(selectedItemPosition, false);
}
}
private static BaseAdapter getSpinnerAdapter(Spinner spinner, List<CharSequence> dropDownItemList) {
// don't use dropDownItemList#add(int, E)
// otherwise we will have multiple "全部"
// if we call this method many times
List<CharSequence> list = new ArrayList<>();
// the first drop-down item is "全部"
// and other items fetched from S1
list.add(spinner.getContext().getString(
R.string.toolbar_spinner_drop_down_all_forums_item_title));
list.addAll(dropDownItemList);
ArrayAdapter<CharSequence> arrayAdapter;
Context context = spinner.getContext();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
arrayAdapter = new ArrayAdapter<>(context, R.layout.toolbar_spinner_item, list);
} else {
arrayAdapter = new ArrayAdapterCompat<>(context, R.layout.toolbar_spinner_item, list);
}
arrayAdapter.setDropDownViewResource(R.layout.toolbar_spinner_dropdown_item);
return arrayAdapter;
}
}