Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Hint no Spineer

Boa tarde, galera!

Já venho pesquisando há algum tempo sobre como colocar hint no componente Spinner, mas só encontro exemplos usando um array de Strings direto no código java. Algo como:

    private String[] promotores = {"Selecione" ,"promotor","promotor","promotor","promotor","promotor"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cadastro_processo);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        spPromotores = (Spinner) findViewById(R.id.spinner_promotores);
//        final ArrayAdapter<CharSequence> adapterSpinner = ArrayAdapter.createFromResource(this, R.array.promotores, android.R.layout.simple_spinner_item);
//        adapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//        spPromotores.setAdapter(adapterSpinner);

//        Inicializando o arrayAdapter
        final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
                this, R.layout.support_simple_spinner_dropdown_item, promotores) {
            @Override
            public boolean isEnabled(int position) {
                if (position == 0) {
                    // Disable the first item from Spinner
                    // First item will be use for hint
                    return false;
                } else {
                    return true;
                }
            }

            @Override
            public View getDropDownView(int position, View convertView,
                                        ViewGroup parent) {
                View view = super.getDropDownView(position, convertView, parent);
                TextView tv = (TextView) view;
                if (position == 0) {
                    // Set the hint text color gray
                    tv.setTextColor(Color.GRAY);
                } else {
                    tv.setTextColor(Color.BLACK);
                }
                return view;
            }
        };
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spPromotores.setAdapter(spinnerArrayAdapter);
//        Finalizando o arrayAdapter

Notem que no começo estou criando um array de strings, porém eu queria pegar as strings direto do xml que criei justamente para isso:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="promotores">
        <item>Promotor 1</item>
        <item>Promotor 2</item>
        <item>Promotor 3</item>
        <item>Promotor 4</item>
        <item>Promotor 5</item>
        <item>Promotor 6</item>
        <item>Promotor 7</item>
        <item>Promotor 8</item>
        <item>Promotor 9</item>
        <item>Promotor 10</item>
    </string-array>

</resources>

Mas dessa forma não consigo, como fiz no código comentado.

Alguém me dá um help?

5 respostas

Eduardo, tudo bem ?

Cara infelizmente essa é a forma de fazer isso atualmente, colocar o primeiro campo como um hint.

Você consegue fazer uma validação para ver qual é o item checado, caso ainda seja a primeira opção, você pode dar alguma informação na tela, falando que o campo é obrigatório.

Mas queria torna-lo desabilitado trazendo as informações direto de um array xml. Não tem como então?

Como assim ?

solução!

Pra pegar do xml um array:

getResources().getStringArray(R.array.promotores)

https://developer.android.com/reference/android/content/res/Resources.html#getStringArray(int)

Deu certo Fabio, valeu cara :-)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software