Я ищу один способ вставить текст «-Выберите один вариант-» внутри прядильщика. У меня есть выбор в sqlite, который возвращает некоторые результаты, и я показываю эти результаты на счетчике.

Как я могу отобразить «-Выберите один вариант-» с моими результатами?

Spinner

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;
    }
}
1
FernandoPaiva 13 Мар 2015 в 21:14

2 ответа

Лучший ответ

В вашем коде есть List<Cliente>. Вы можете просто добавить элемент «Выбрать одну позицию» в начало этого списка и увеличить список на единицу, чтобы уместить его.

Или, лучше:

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

Должен работать, может потребоваться изменить для правильной работы, но это общая идея.

1
JonasCz - Reinstate Monica 14 Мар 2015 в 10:58

В вашем списке установите первую позицию с помощью «Выбрать одну позицию».

Примере:

list.get(0).setClientName("select one position");
0
miselking 14 Мар 2015 в 10:39