Android 带有自定义阵列适配器的微调器,用于不显示选定项的对象

Android 带有自定义阵列适配器的微调器,用于不显示选定项的对象,android,view,spinner,android-arrayadapter,selected,Android,View,Spinner,Android Arrayadapter,Selected,我有一个自定义的ArrayAdapter来表示微调器控件上的对象,我可以加载我的项目 列出并显示以供选择,但当实际选择发生时,微调器将不显示任何内容 活动代码: public MetroData metroData; private Spinner spinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV

我有一个自定义的ArrayAdapter来表示微调器控件上的对象,我可以加载我的项目 列出并显示以供选择,但当实际选择发生时,微调器将不显示任何内容

活动代码:

public MetroData metroData;
private Spinner spinner;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    metroData = new MetroData();
    spinner = (Spinner) findViewById(R.id.spinner1);
    StopArrayAdapter dAdapter = new StopArrayAdapter(this, metroData.Stops);

    spinner.setAdapter(dAdapter);
}
停止阵列适配器:

public class StopArrayAdapter extends ArrayAdapter<MetroStop> {

private List<MetroStop> items;
private Activity activity;

public StopArrayAdapter(Activity activity, List<MetroStop> items) {
    super(activity, android.R.layout.simple_list_item_1, items);
    this.items = items;
    this.activity = activity;
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
    TextView v = (TextView) super.getView(position, convertView, parent);

    if (v == null) {
        v = new TextView(activity);
    }
    v.setTextColor(Color.BLACK);
    v.setText(items.get(position).getName());
    return v;
}

@Override
public MetroStop getItem(int position) {
    return items.get(position);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;

    if (v == null) {
        LayoutInflater inflater = activity.getLayoutInflater();
        v = inflater.inflate(R.layout.view_spinner_item, null);
    }
    TextView lbl = (TextView) v.findViewById(R.id.text1);
    lbl.setTextColor(Color.BLACK);
    lbl.setText(items.get(position).getName());
    return convertView;
}
}
公共类StopArrayAdapter扩展了ArrayAdapter{
私人清单项目;
私人活动;
公共StopArrayAdapter(活动、列表项){
超级(活动,android.R.layout.simple_list_item_1,items);
这个项目=项目;
这个。活动=活动;
}
@凌驾
公共视图getDropDownView(int位置、视图转换视图、视图组父视图){
TextView v=(TextView)super.getView(position,convertView,parent);
如果(v==null){
v=新文本视图(活动);
}
v、 setTextColor(颜色为黑色);
v、 setText(items.get(position.getName());
返回v;
}
@凌驾
公共MetroStop getItem(内部位置){
返回项目。获取(位置);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater充气器=活动。getLayoutInflater();
v=充气机。充气(R.layout.view\u spinner\u项目,空);
}
TextView lbl=(TextView)v.findViewById(R.id.text1);
lbl.setTextColor(Color.BLACK);
setText(items.get(position.getName());
返回视图;
}
}
微调器视图项模板:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textColor="#222"/>

关于为什么“选定项”视图不起作用,有什么想法吗?顺便说一句,我也用一个普通的ArrayAdapter进行了尝试,得到了同样的结果


更新似乎生成了视图,但在层次查看器中查看,视图没有渲染,测量/布局/绘制=n/a。

我发现了问题所在。由于我正在从internet获取
微调器的数据,因此我需要触发
notifyDataSetChanged()
,即使没有它,
微调器的内容也会更新。所选项目视图似乎没有收到通知。

在getView
返回视图中=>
返回v

否,textColor对所选项目视图没有任何影响,我已尝试使用或不使用。