Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Conteúdo do AutoCompleteTextView

Olá, pessoal.

Estou tentando pegar o conteúdo de um AutoCompleteTextView, mas está aparecendo um conteúdo vazio (fiz um Toast para testar).

Já tentei de duas formas:

TextInputLayout:

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/filtro_adapter_unidade"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="8dp"
        android:textColorHint="#FFFFFF"
        android:textSize="18sp"
        app:boxBackgroundColor="#00FFFFFF"
        app:boxStrokeColor="#1B508C"
        app:layout_constraintEnd_toStartOf="@+id/filtro_adapter_secretaria1"
        app:layout_constraintHorizontal_bias="0.49"
        app:layout_constraintStart_toStartOf="@+id/layoutHeader"
        app:layout_constraintTop_toTopOf="@+id/layoutHeader">

        <AutoCompleteTextView
            android:id="@+id/spinnerAdapterUnidade"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Unidade"
            android:inputType="none"
            android:textColor="#FFFFFF" />

1) pegando o TextInputLayout

TextInputLayout unidadeTeste  = findViewById(R.id.filtro_adapter_unidade);
String unidadeTeste_Conteudo = unidadeTeste.getEditText().getText().toString();

(Toast.makeText(MainActivity.this, unidadeTeste_Conteudo, Toast.LENGTH_SHORT)).show();

2) e pegando o AutoCompleteTextView

AutoCompleteTextView spinner_filtro_unidade = findViewById(R.id.spinnerAdapterUnidade);
String unidade = spinner_filtro_unidade.getEditableText().toString();

(Toast.makeText(MainActivity.this, unidade, Toast.LENGTH_SHORT)).show();

O que estaria fazendo de erro, por favor?

10 respostas

Fala Thiago, de boa?

Cara as coisas estavam funcionando, não ? O que rolou que mudou o comportamento ?

Em tese, usar o getText e em seguida o toString já resolveria seu problema em pegar o dado do AutoCompleteTextView

Tudo ótimo e contigo?

Os AutoCompleteTextView do formulário de cadastro estão funcionando hahaha

Mas lembra que na tela inicial eu coloquei uns campos para filtrar? Estavam lá só de enfeite. Agora fui fazer o código e não funcionou. O mais estranho é que está igual ao código do formulário para cadastro de visita.

De boa por aqui :)

Cara, não lembro não, só havia o botão de adicionar novas visitas.

Você setou os adapters corretamente ?

Setei, mas aí eu tirei para testar e coloquei o Toast para ver o que ele estava pegando. O Toast aparece vazio, não está pegando o conteúdo do AutoCompleteTextView.

Sem adapter, o campo não tem opção, deve ser por esse motivo que não está exibindo nada.

Além disso, tu devia fazer esse toast apenas no momento que o campo foi selecionado, imagino.

O Toast coloquei no método qdo clica no botão. Mesmo antes de passar para o adapter, deveria aparecer, pelo Toast, na tela o conteúdo selecionado:

buttonPesquisar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                (Toast.makeText(MainActivity.this, situacao, Toast.LENGTH_SHORT)).show();
                (Toast.makeText(MainActivity.this, unidadeTeste_Conteudo, Toast.LENGTH_SHORT)).show();
            }
        });

O adapter não funcionou pq está passando o conteúdo vazio. Tirei o método do adapter e coloquei o Toast para confirmar o que estava na variável. Está vazia.

O erro está em pegar este conteúdo. Só não entendi o motivo.

solução!

Thiago,

Você precisa pegar os valores no momento que fizer esse click, ou seja, os getText precisam estar ai.

Não é que funcionou? Kkkkkkkkkkkkkkkkkkkk

Rapaz, eu coloquei como atributo da classe. Por que assim não aceitou?

quando tu faz o getText, ele pega o conteúdo no instante que você faz essa ação.

por esse motivo não funcionou, entende?