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

Set no AutoCompleteTextView

Olá.

Não consegui localizar um meio de, ao abrir o formulário no modo de edição, atribuir o valor do AutoCompleteTextView cadastrado. Achei vídeos e no manual somente pegando o valor, mas não setando depois que é feito um cadastro, por exemplo.

Parece que é:

spinnerTurma_irmao.getEditableText().setFilters()

Mas não entendi como preencher o inputFilter. Poderiam me auxiliar, por favor.

Código: https://github.com/thiagornela/visita

26 respostas

Hey Thiago, de boa ?

Cara estava dando uma olhada e acho que você pode usar o método setText e passar o texto que deseja pra ele.

Fala, Matheus. Fiz o teste. Depois do getEditableText(), não aparece a opção de setText. Então coloquei:

spinnerTurma_crianca.setText(visita.getTurma_crianca());

E deu certo. Na edição, apareceu a turma selecionada na hora do cadastro. Contudo, não consigo alterar a turma. Só aparece a que foi selecionada no ato do cadastro, não aparece a lista inteira.

Matheus, aproveitando um outro ponto, mas que também está relacionado ao DropDown menu no TextInputLayout... Os campos spinnerTurma_crianca e spinnerTurno_crianca (os mesmos acima que estou tentando fazer o setting) da classe Cadastro_Visita, eles estão puxando normalmente os arrays. Contudo, estou aproveitando os mesmos arrays para os campos spinnerTurma_irmao e spinnerTurno_irmao, mas dá NEP. Não entendi o motivo. Tem como me dar um ajuda nisso também, por favor

O que você pode fazer também é selecionar o item da lista, dado que tu tem a lista inteira contigo, pode ver qual é a posição que seu item está e em seguida usar o método : setListSelection passando a posição, deve solucionar seu problema.

Matheus, seria algo assim. Não consegui kkkk. Deu não

spinnerTurno_crianca.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Turno turnoSelecionado = (Turno) parent.getItemAtPosition(position);
                turnoSelecionado.setTurno(parent.toString());
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

Na realidade falei pra tu fazer algo assim:

int posicao = listaDeVisitas.indexOf(visita.getTurma_crianca())
spinnerTurno_crianca. setListSelection(posicao)

Matheus, com as adaptações, ficou assim:

Instanciei uma nova, pois não tinha:

private final ListaVisitasView listaDeVisitas = new ListaVisitasView(this);
final List<Visita> visitasFiltradas = listaDeVisitas.listaDoAdapterFiltrado();

        int posicao = visitasFiltradas.indexOf(visita.getTurma_crianca());
        spinnerTurma_crianca.setListSelection(posicao);

Mas no formulário ainda apareceu só a turma selecionada, não a lista de turmas. Não é fácil não.

ehehehe

Tu precisa passar o adapter pra ela antes de fazer esse código, imagino que esteja fazendo isso, certo ?

Cheguei à conclusão que vou desistir do projeto

Não rapaz, desiste não poxa!

Tem sido bacana ver que tu tem aprendido e ainda mais o resultado das coisas que tu tem feito, óbvio que ainda tem mais coisas a aprender, mas tu tá num caminho bacana.

alem disso, peguei o projeto aqui e parece que você esqueceu de comittar as coisas hehehe

dá uma atualizada, só tem a main activity

Rsrs complicado d+ kkkkkkk

Veja se foi, por favor.

você precisa adicionar os arquivos novos, provavelmente o comando que está esquecendo de fazer é git add arquivos

Uai. Usei 1) git add app, 2) git commit -m "versao 10" e depois 3) git push. Acessei o link e os arquivos estão lá

Como faz pra tentar alterar, não vi nenhuma tela pra isso, na realidade a tela inicial é uma tela que vai apenas pra tela de visita

Ah. É que precisará cadastrar uma visita... Tirei os pré-cadastrados kkkk. Mas para aparecer no adapter (tela inicial), no final do formulário, precisa selecionar a opção de situação "Ambientação para" ou "aguardando contato para"

Cara eu to tentando e não to conseguindo adicionar nada, não aparece nada :(

Será que consegue validar se tem funcionado ai ?

Ué. Sim, tá funcionando. Na situação, vc tá colocando "Ambientação para" ou "Contato para"?

Ambas :(

O código quando peguei mostrou um monte de problema de import, embora tenha rodado, achei estranho, to com medo que isso possa estar atrapalhando um pouco.

Deu mesmo esses erros de import... Aí como rodou, deixei para olhar depois... Testei de novo e vi que algumas vezes o adapter não puxou... Fiz 2 a 3 cadastros, com valores diferentes e aí sim ele foi todos os anteriores. Agora complicou aff

Boa noite, Matheus. Bom?

Pelo que vi, o adapter tá certo. Até coloquei um notifyDataSetChanged() no miserável kkk. Tem hora que aparece as visitas de primeira, tem hora que precisa cadastrar mais de uma aí que ele puxa todas.

O método atualiza está assim:

public void atualiza(List<Visita> visitas) {
        List<Visita> visitas_filtradas = new ArrayList<>();
        for (int i = 0; i < visitas.size(); i++) {
            if (visitas.get(i).getSituacao().equals(SITUACAO_CONTATO_ESCOLA_PARA) || visitas.get(i).getSituacao().equals(SITUACAO_AMBIENTACAO_PARA)) {
                visitas_filtradas.add(visitas.get(i));
            }
        }
        this.visitas.clear();
        this.visitas.addAll(visitas_filtradas);
        notifyDataSetChanged();
    }

Preciso implementar mais alguma coisa?

Matheus, analisando o código com a cabeça fria kkkkk, agora o adapter está funcionando. Podemos continuar tentando arrumar o AutoCompleteTextView rs

solução!

Arrumei a sua edição :)

Cara o setText ele coloca só aquele valor e remove todos os valores previos que você tinha colocado, você precisa usar ele com uma opção de não remover os valores anteriores:


        spinnerTurma_crianca.setText(visita.getTurma_crianca(), false);
        spinnerTurno_crianca.setText(visita.getTurno_crianca(), false);

deve solucionar seu problema com os demais campos também :)

Cara, eu te amo kkkkkkkkkkkkkkkkkkk (zuera)

Funcionou que nem uma maravilha

Aproveitando um outro ponto sobre esse AutoComplete... Estou aproveitando os mesmos arrays do spinnerTurma_crianca e spinnerTurno_crianca (os mesmos que você arrumou) para os campos spinnerTurma_irmao e spinnerTurno_irmao (só aparecem quando o switch de irmão está ativo), mas dá NEP. Não entendi.

Attempt to invoke virtual method 'void android.widget.AutoCompleteTextView.setAdapter(android.widget.ListAdapter)' on a null object reference

Da criança:

ArrayAdapter<Turma> arrayAdapterTurma = new ArrayAdapter<>(this, android.R.layout.simple_selectable_list_item, turmaDAO.todos());
        spinnerTurma_crianca.setAdapter(arrayAdapterTurma);
        ArrayAdapter<Turno> arrayAdapterTurno = new ArrayAdapter<>(this, android.R.layout.simple_selectable_list_item, turnoDAO.todos());
        spinnerTurno_crianca.setAdapter(arrayAdapterTurno);

Do irmão só aproveitando o arrayAdapter:

spinnerTurma_irmao.setAdapter(arrayAdapterTurma);
 spinnerTurno_irmao.setAdapter(arrayAdapterTurno);

Já tentei criar um array só para o irmão, mas também deu erro. Nesse caso, qual lógica devo ter?

Você fez findViewById deles corretamente ?

Provavelmente o problema deve estar ai.

Cara, vamos fechar o esse tópico e se for necessário você abre outro, mas de toda forma, receito ser que você não inicializou os valores, dá um olhada.