Android:有没有办法将对象添加到微调器并仅显示它的 属性?

Android: Is there a way to add an object to a spinner and display only a property of it?

我有一个名为 spinnerItems 的数组,其中填充了 DateSpinnerItem 类型的对象。我将它传递给 Spinner 使用的适配器。

我的 DataSpinnerItem 对象具有三个属性:Label、Date1 和 Date2。

我的问题是,有没有办法将它们添加到适配器,但在选项中只显示 object.Label?

我的 DataSpinnerItem class:

public class DateSpinnerItem {

public String Label;
public String dateInicioStringValue;
public String dateFinalStringValue;

public DateSpinnerItem(){

}
}

我的适配器:

ArrayAdapter<DateSpinnerItem> adapter = new ArrayAdapter<DateSpinnerItem>(this, android.R.layout.simple_spinner_dropdown_item) {

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            //((TextView) v).setGravity(Gravity.CENTER);
            return v;
        }

        @Override
        public int getCount() {
            return super.getCount();
        }

        public View getDropDownView(int position, View convertView,ViewGroup parent) {

            View v = super.getDropDownView(position, convertView,parent);

            ((TextView) v).setGravity(Gravity.CENTER);

            return v;

        }
    };

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    for (int i=0; i<spinnerItems.length; i++){
        adapter.add(spinnerItems[i]);
    }

    sp.setAdapter(adapter);
    sp.setSelection(adapter.getCount()-1); //display hint

提前致谢!

找到解决办法了!其实比我想象的要简单很多。

只需将 toString 方法从我的自定义 class (DataSpinnerItem) 覆盖到 return 标签:

public class DateSpinnerItem {

public String Label;
public Date dateInicioStringValue;
public Date dateFinalStringValue;

public DateSpinnerItem(){

}

@Override
public String toString() {
    return Label;
}
}

这样,我就可以将 DataSpinnerItems 添加到适配器中,并且由于 toString() 覆盖,它为我显示了代表添加的对象的标签!