使用自定义ArrayAdapter作为微调器下拉列表的奇怪行为(单击后复制项目)(Android)

使用自定义ArrayAdapter作为微调器下拉列表的奇怪行为(单击后复制项目)(Android),android,spinner,android-arrayadapter,dropdown,Android,Spinner,Android Arrayadapter,Dropdown,我想对微调器下拉列表使用不同的布局:一个用于普通视图(文本+图像),另一个用于下拉列表(仅文本) 因此,首先,我尝试了以下方法: Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item_title, R.id.text, list); adapter.setDropD

我想对微调器下拉列表使用不同的布局:一个用于普通视图(文本+图像),另一个用于下拉列表(仅文本)

因此,首先,我尝试了以下方法:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item_title, R.id.text, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
然后,我想选择项目4(选择后,下拉列表隐藏):

当我再次单击以选择另一个项目时,它的显示方式如下:

|item 4|

item 1
item 2
item 3
item 1
有人知道解决办法吗?
我希望所有的项目总是出现在下拉列表(没有重复也)

我有一个自定义适配器的问题,在我的情况下,解决方案是替换此适配器:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = inflator.inflate(R.layout.spinner_item, null);

        ViewHolder holder= new ViewHolder();
        holder.textTitle = (TextView) convertView.findViewById(R.id.textSpinnerItem);
        holder.textTitle.setText(spinnerItems.get(position).getName());
        holder.image = (ImageView) convertView.findViewById(R.id.imageSpinnerItem);
    }


    return convertView;
}
这样:(在某些情况下,当您单击下拉项时,convertView为空)


希望这有帮助

我的自定义适配器出现了此问题,在我的情况下,解决方案是替换此适配器:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = inflator.inflate(R.layout.spinner_item, null);

        ViewHolder holder= new ViewHolder();
        holder.textTitle = (TextView) convertView.findViewById(R.id.textSpinnerItem);
        holder.textTitle.setText(spinnerItems.get(position).getName());
        holder.image = (ImageView) convertView.findViewById(R.id.imageSpinnerItem);
    }


    return convertView;
}
这样:(在某些情况下,当您单击下拉项时,convertView为空)


希望这对您有所帮助

您能显示您的适配器类吗?您能显示您的适配器类吗?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = inflator.inflate(R.layout.spinner_item, null);

        ViewHolder holder= new ViewHolder();
        holder.textTitle = (TextView) convertView.findViewById(R.id.textSpinnerItem);
        holder.textTitle.setText(spinnerItems.get(position).getName());
        holder.image = (ImageView) convertView.findViewById(R.id.imageSpinnerItem);
    }


    return convertView;
}
 @Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = inflator.inflate(R.layout.spinner_item, null);
    }
    ViewHolder holder= new ViewHolder();
    holder.textTitle = (TextView) convertView.findViewById(R.id.textSpinnerItem);
    holder.textTitle.setText(spinnerItems.get(position).getName());
    holder.image = (ImageView) convertView.findViewById(R.id.imageSpinnerItem);

    return convertView;
}