我有一个使用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);
答案 0 :(得分:1)
您必须将对象的索引传递给setSelection(int)
方法,而不是对象。您可以使用list.indexOf(est2)
从列表中检索索引。在您的情况下,它将是:
spinEstado.setSelection(list.indexOf(est2));