Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Implementação SearchView em um ListView

interessante,
procura no google por "android listview getfilter" que tem vários materiais no stackoverflow. inclusive esse com um link pra um vídeo do google I/O e um código de exemplo.

Como eu não tinha visto esse metodo ainda não vou arriscar uma solução ainda mas pelo que entendi tu precisa implementar manualmente o getfilter. Ele recebe por padrão uma string, mas como o filtro será efetuado tu quer precisará implementar.

Pelas soluções que eu vi acho que tem tanto processamento que quase vale a pena fazer uma consulta a banco...hehehe



Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


2013/4/2 Guilherme Bernardi <gui.bernardi09@gmail.com>
Então eu estava tentando partir para este caminho aqui:

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub
           return true;
}
@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
dataAdapter.getFilter().filter(newText.toString());
return false;
}
});

Só que onde eu defino por qual campo eu quero pesquisar no meu adapter?

Então da maneira que você falou, é exatamente o que não quero fazer é consultar o banco a cada letra.

Porque ao meu ver não tem sentido...

Se eu carreguei um cursor por exemplo com 100 contatos, adaptei ele para o ListView e carreguei o List. Meu cursor continua com os 100 clientes.

Eu queria filtrar dentro do próprio cursor e atualizar o List e não ficar fazendo requisições ao banco para ir lá e filtrar lá. Se eu tenho já todos os clientes para que ir verificar novamente?

On Tuesday, April 2, 2013 10:43:46 AM UTC-3, Mstrey wrote:
Cara,
no campo onde o usuário está digitando o texto (SearchView) tu implementa um keyListener.
no metodo onKeyUp tu recarrega a tua lista de elementos notificando o adapter que ele foi atualizado com o notifyDataSetChanged()

O problema é que tu precisa cuidar quando a lista está associada com um número enorme de elementos, pios a cada tecla pressionada uma nova consulta ao banco será efetuada. 

Se alguém tiver alguma solução elegante, ficarei feliz se compartilhar.


Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
------------------
Linux user: #525086


2013/4/2 Guilherme Bernardi <gui.ber...@gmail.com>

Entendi, é eu olhei algo semelhante.

Cara esse AutoComplete será útil para outros tipos de pesquisa que tenho que implementar.

Mas essa pesquisa no ListView que eu gostaria de implementar, teria de ser de preferencia utilizando o SearchView da actionBar.

Para ser mais específico eu queria fazer uma pesquisa praticamente igual a que é feita na lista de contatos do aparelho. Onde conforme você vai digitando ele já vai atualizando a lista embaixo.


On Tuesday, April 2, 2013 10:27:33 AM UTC-3, diogo10 wrote:

Diogo Henrique
Rede Sociais: 






Em 2 de abril de 2013 10:23, Guilherme Bernardi <gui.ber...@gmail.com> escreveu:

Desculpa a falta de conhecimento, não conheço o AutoComplete.

Estou pesquisando aqui...

Mas qual a diferença dele para os demais?
E eu consigo implementar ele normal para esperar o resultado do SearchWidget?

Eu queria fazer a pesquisa bem dinâmica, por exemplo o cara vai digitando ele já vai filtrando os dados automaticamente e atualizando a lista abaixo, isso ficaria lento?

Por isso a intenção era utilizar o próprio cursor que eu já carreguei. Se eu fosse fazer dessa forma que eu quero buscando no banco de dados a cada letra ou palavra digitada com toda certeza iria ficar lento.


On Tuesday, April 2, 2013 10:19:09 AM UTC-3, diogo10 wrote:
Nesse caso Guilherme, porque você não implementar um AutoComplete ?

Diogo Henrique
Rede Sociais: 






Em 2 de abril de 2013 10:16, Guilherme Bernardi <gui.ber...@gmail.com> escreveu:
Bom dia, 

Pessoal estou utilizando a ActionBar Sherlock para desenvolver meu app. Pois o app é para android 2.x, estou tentando fazer a implementação do SearchView disponível na própria actionBar. 

Pesquisei na internet e na documentação do Android. 

E cada um faz de um jeito, tem pessoas que utilizam Filterable, outras utilizam o Listener do SearchView chamando uma nova Activity só para exibição dos dados filtrados e também outros fazem um adapter do Filterable para controlar isso... 

Gostaria de saber qual a melhor maneira de fazer esse tipo de implementação, sem contar que por exemplo. 

Eu estou dentro de meu próprio ListView, ele foi carregado com um Cursor retornado pela minha classe de Persistencia: 

produto = new Produto(codigoGrupo);
produto.setTabelaColunaComposta(projection);
cursorProdutos = produto.CarregaTodos();
if(cursorProdutos!=null){
if(cursorProdutos.getCount() > 0){
cursorProdutos.moveToFirst();
       dataAdapter = new SimpleCursorAdapter(this, R.layout.activity_lista_produtos, cursorProdutos, campos, new int[] {R.id.listaCodigoProduto,R.id.listaNomeProduto});
       setListAdapter(dataAdapter);
}
}

Eu não posso por exemplo, utilizar o próprio dataAdapter já que eu estou dentro do próprio listView e fazer a pesquisa bem dinâmica conforme o usuário digita ele já pesquisa dentro do próprio cursor que eu tenho carregado? 

Porque os exemplos que eu vi, o pessoal vai e faz uma nova consulta no banco de dados, para setar novamente o Adapter ou então carrega uma nova List que serve só para receber os dados após a pesquisa. 

Se eu já tenho os dados no contexto atual, por que fazer uma nova pesquisa? Ou então por que ter de chamar um novo List? 

Obrigado desde já pela atenção.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário