在自定义微调器中获取包名称

时间:2016-08-11 11:33:38

标签: android android-spinner

我正在使用自定义微调器库Material Spinner。我已将适配器设置为微调器,因为我希望getDropDownView中的字体大小不同。我有三个微调器,其中两个只显示包名。中间旋转器工作正常。

enter image description here

除了阵列和宽度之外,所有三个微调器都是相同的。那么为什么中间的旋转器呢?我无法弄清楚问题是什么。

这不是重复的问题

提到的一个原因是应该覆盖getView方法。如下所示,它已经完成。我发现在第一个和第三个微调器的情况下,没有调用getView方法或getDropDownView方法。我不明白为什么。

getItemCountgetItemIdgetItem方法不需要。但是当我也使用这些方法时,结果并没有改变。

MaterialSpinner msDay = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_day);
    List dayList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_day));
    msDay.setItems(new EnglishSpinnerAdapter(getActivity(), dayList));

    MaterialSpinner msMonth = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_month);
    List monthList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_month));
    msMonth.setAdapter(new EnglishSpinnerAdapter(getActivity(), monthList));

    MaterialSpinner msYear = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_year);
    List yearList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_year));
    msYear.setItems(new EnglishSpinnerAdapter(getActivity(), yearList));

适配器:

public class EnglishSpinnerAdapter extends MaterialSpinnerAdapter{
private List list;
private Context ctx;

public EnglishSpinnerAdapter(Context context, List items) {
    super(context, items);
    ctx = context;
    list = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    TextView textView = new TextView(ctx);
    textView.setText(list.get(position).toString());
    return textView;
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
    TextView textView = new TextView(ctx);
    textView.setText(list.get(position).toString());
    return textView;
}

1 个答案:

答案 0 :(得分:0)

更改此

 msDay.setItem(new EnglishSpinnerAdapter(getActivity(), dayList));

到这个

 msDay.setAdapter(new EnglishSpinnerAdapter(getActivity(), dayList));