https://github.com/MiguelCatalan/MaterialSearchView
oi boa tarde, bom é esse seacheview que uso, e uso em fragment
tenho 2 fragment uma chamado contato e o outro conversa entao se o usuario estiver no fragment contato a busca será automaticamente no contato, se tiver na conversa será na conversa.
na activity mãe eu uso sim
SeachView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
}
@Override
public void onSearchViewClosed() {
ConversasFragment fragment = (ConversasFragment) adapter.getPage(0);
fragment.recarregarConversas();
}
});
SeachView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//Verificar se esta pesquisando Conversa ou contatos
switch(viewPager.getCurrentItem()){
case 0:
ConversasFragment conversasFragment =(ConversasFragment) adapter.getPage(0);
if(newText!=null && !newText.isEmpty()){
conversasFragment.PesquisarConversa(newText.toLowerCase());
}else{
conversasFragment.recarregarConversas();
}
break;
case 1:
ContatosFragment contatosfragment = (ContatosFragment) adapter.getPage(1);
if(newText!=null && !newText.isEmpty()){
contatosfragment.PesquisarContatos(newText.toLowerCase());
}else{
contatosfragment.recarregarContatos();
}
break;
}
return true;
}
});
isso fica dentro do fragment Conversa
public void PesquisarConversa(String texto) {
List<Conversa> listaConversaBusca = new ArrayList<>();
for (Conversa conversa : listaConversas) {
if (conversa.getUsuarioExibicao() != null) {
String nome = conversa.getUsuarioExibicao().getNome().toLowerCase();
String ultimaMsg = conversa.getUltimaMensagem().toLowerCase();
if (nome.contains(texto) || ultimaMsg.contains(texto)) {
listaConversaBusca.add(conversa);
}
} else {
String nome = conversa.getGrupo().getNome().toLowerCase();
String ultimaMsg = conversa.getUltimaMensagem().toLowerCase();
if (nome.contains(texto) || ultimaMsg.contains(texto)) {
}
}
adapter = new ConversasAdapter(listaConversaBusca, getActivity());
recyclerViewConversas.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
esse dentro do fragment contato
public void PesquisarContatos(String texto) {
List<Usuario> listaContatosBusca = new ArrayList<>();
for (Usuario usuario : listaContatos) {
String nome=usuario.getNome().toLowerCase();
if(nome.contains(texto)){
listaContatosBusca.add(usuario);
}
}
adapter = new ContatosAdapter(listaContatosBusca, getActivity());
recyclerViewListaContatos.setAdapter(adapter);
adapter.notifyDataSetChanged();
}