FernandoPaiva
FernandoPaiva

Reputation: 4462

Select One Option inside Spinner with results of a SELECT?

I'm looking for one way to insert text "-Select one option-" inside a Spinner. I have a select in sqlite that return some results and I do display these results at spinner.

How could I do display "-Select one option-" with my results ?

Spinner

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

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;
    }
}

Upvotes: 1

Views: 74

Answers (2)

Jonas Czech
Jonas Czech

Reputation: 12348

In your code you have List<Cliente> , You could just add an item "Select one position" to the start of that list, and grow the list by one to fit it.

Or, better way:

...
@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;
}

Should work, may need to be modified to work properly, but this is the general idea.

Upvotes: 1

Caique Oliveira
Caique Oliveira

Reputation: 262

In your list, set the first position with "Select one position".

Example:

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

Upvotes: 0

Related Questions