在ArrayAdapter中重写getDropDownView时的样式问题

waq*_*lam 10 android view android-arrayadapter android-spinner

当重写getDropDownView方法时,我遇到了一个奇怪的行为ArrayAdapter.我需要覆盖此方法,以便从我的自定义对象中显示正确的字符串值.多数民众赞成我的阵列适配器如何:

ArrayAdapter<NoteType> adapter = new ArrayAdapter<NoteType>(this, android.R.layout.simple_spinner_item, lstNoteTypes){
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView lbl = (TextView) super.getView(position, convertView, parent);
        lbl.setText(getItem(position).getName());
        return lbl;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        TextView lbl = (TextView) super.getView(position, convertView, parent);
        lbl.setText(getItem(position).getName());
        return lbl;
    }
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)

因此,当我覆盖时getDropDownView,我的Spinner看起来如下 - 项目高度非常小,这不是我想要的:

在此输入图像描述

但是当我评论(或不覆盖)该getDropDownView方法时,它看起来没有默认样式,但我不能将所需的文本值注入下拉项. 在此输入图像描述

请注意两个图像中项目的高度仅仅是因为覆盖getDropDownView.

有什么建议?或者我的代码中缺少什么?

PKe*_*eno 3

如果您自己编写 NoteType,请重写其中的 toString() 。只需将以下内容添加到您的 NoteType 类中:

@Override
public String toString() {
    return getName();
}
Run Code Online (Sandbox Code Playgroud)