Select Spinner 中的一个选项,结果为 SELECT?

Select One Option inside Spinner with results of a SELECT?

我正在寻找一种在 Spinner 中插入文本“-Select 一个选项-”的方法。我在 sqlite 中有一个 select return 一些结果,我确实在微调器上显示了这些结果。

如何在结果中显示“-Select 一个选项-”?

旋转器

Spinner spin = (Spinner)findViewById(R.id.mySpinner);
ConsultaClienteVendaProdutoListAdapter adapter = new ConsultaClienteVendaProdutoListAdapter(this, lista);
spin.setAdapter(adapter);

适配器

public class ConsultaClienteVendaProdutoListAdapter extends BaseAdapter{
    private List<Cliente> list;
    private Context context;


    public ConsultaClienteVendaProdutoListAdapter(List<Cliente> list, Context context) {
        this.list = list;
        this.context = context;
    }

    public void changeList(List<Cliente> list){
        this.list = list;
        notifyDataSetChanged();
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        Cliente cliente = list.get(position);
        if (convertView == null) {
            viewHolder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.consulta_cliente_venda_produto_adapter, parent, false);

            viewHolder.llClienteAdapter = (LinearLayout) convertView.findViewById(R.id.llClienteAdapter);
            viewHolder.tvNome = (TextView) convertView.findViewById(R.id.tvNome);


            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder)convertView.getTag();
        }

        viewHolder.tvNome.setText(cliente.getNome());


        return convertView;
    }


    /** pattern view holder */
    private static class ViewHolder{
        LinearLayout llClienteAdapter;
        TextView tvNome;
    }
}

在您的列表中,将第一个位置设置为 "Select one position"。

示例:

list.get(0).setClientName("select one position");

在你的代码中你有 List<Cliente> ,你可以只添加一个项目 "Select one position" 到该列表的开头,并将列表增加一个以适应它。

或者,更好的方法:

...
@Override
public int getCount() {
    return list.size() + 1;
}
...

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;
    Cliente cliente;
    if (position != 0) { //Java counts from zero
        cliente = list.get(position - 1);
    }
    ...
    if (position == 0) {
        viewHolder.tvNome.setText("-Select one option-");
    } else {
        viewHolder.tvNome.setText(cliente.getNome());
    }

    return convertView;
}

应该工作,可能需要修改才能正常工作,但这是一般的想法。