Eu criei uma visualização de lista no Android e quero adicionar texto de edição acima da lista e quando o usuário inserir o texto, a lista será filtrada de acordo com a entrada do usuário
Alguém pode me dizer por favor se existe uma maneira de filtrar o adaptador de lista no Android?
Respostas:
Adicione um EditText no topo de sua exibição de lista em seu arquivo de layout .xml. E na sua atividade / fragmento ..
O básico aqui é adicionar um OnTextChangeListener ao texto de edição e, dentro de seu método de retorno de chamada, aplicar filtro ao adaptador do listview.
EDITAR
Para obter o filtro para seu BaseAdapter personalizado, você precisará implementar uma interface filtrável .
Dentro de performFiltering (), você precisa fazer uma comparação real da consulta de pesquisa com os valores em seu banco de dados. Ele passará seu resultado para o método publishResults () .
fonte
Implemente seu adaptador filtrável:
em seguida, crie sua classe Filter:
desta forma, seu adaptador é filtrável, você pode passar o item do filtro para o filtro do adaptador e fazer o trabalho. Espero que isso seja útil.
fonte
Caso alguém ainda esteja interessado neste assunto, acho que a melhor abordagem para filtrar listas é criar uma classe Filter genérica e usá-la com algumas técnicas básicas de reflexão / genéricas contidas no pacote Java da velha escola SDK. Aqui está o que eu fiz:
E depois disso, a única coisa que você precisa fazer é criar o filtro como uma classe membro (possivelmente dentro de "onCreate" do View) passando sua referência de adaptador, sua lista e o método a ser chamado para filtrar:
A única coisa que falta agora é substituir o método "getFilter" na classe do adaptador:
Tudo feito! Você deve filtrar sua lista com sucesso - Claro, você também deve implementar seu algoritmo de filtro da melhor maneira que descreva sua necessidade, o código abaixo é apenas um exemplo. . Espero que tenha ajudado, tome cuidado.
fonte