如何使用BaseAdapter使setSelection成为一个Spinner?

时间:2015-03-02 21:37:58

标签: android

我有一个使用BaseAdapter和一些对象的Spinner。我想要正确选择一个对象,但我无法做到。

我怎样才能在我的对象中进行setSelection?

对象

public class Estado{
   private Integer id;
   private String estado;
}

BaseAdapter

public class EstadoListAdapter extends BaseAdapter  {
    private Context context;
    private List<Estado> lista;


    public EstadoListAdapter(Context context, List<Estado> lista){
        this.context = context;
        this.lista = lista;
    }

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

    @Override
    public Object getItem(int position) {
        return lista.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Estado estado = lista.get(position);
        ViewHolder viewHolder;
        if(convertView == null){
            viewHolder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.estado_cidades_listadapter, parent, false);
            viewHolder.llEstadoCidades = (LinearLayout) convertView.findViewById(R.id.llEstadoCidades);
            viewHolder.tvEstadoCidade = (TextView) convertView.findViewById(R.id.tvEstadoCidade);

            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder)convertView.getTag();
        }
        viewHolder.tvEstadoCidade.setText(estado.getEstado());
        return convertView;
    }



    //holder pattern
    private static class ViewHolder{
        LinearLayout llEstadoCidades;
        TextView tvEstadoCidade;
    }
}

活动

Spinner spinEstado = (Spinner)findViewById(R.id.acEstado);

Estado est1 = new Estado(1, "SP");
Estado est2 = new Estado(2, "MG");
Estado est3 = new Estado(3, "RJ");

List<Estado> list = new ArrayList<Estado>();
list.add(est1);
list.add(est2);
list.add(est3);

EstadoListAdapter adapter = new EstadoListAdapter(this, list);
spinEstado.setAdapter(adapter);

spinEstado.setSelection(est2);

1 个答案:

答案 0 :(得分:1)

您必须将对象的索引传递给setSelection(int)方法,而不是对象。您可以使用list.indexOf(est2)从列表中检索索引。在您的情况下,它将是:

spinEstado.setSelection(list.indexOf(est2));