Amigos como estan, tengo un list view al cual esta enlazado a un CursorAdapter
En una actividad dentro de un fragmento tengo en el toolbar el serchview implementado
Lo que quiero es que cuando digite cualquier letra dentro del serchview se vaya filtrando el listview
Mi codigo es el siguiente
@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
//super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.menu_buscar_articulos,menu);
final MenuItem searchItem = menu.findItem(R.id.mnu_articulo_buscar);
final SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint("Buscar Articulo");
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(getActivity(),query,Toast.LENGTH_LONG).show();
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
if (!TextUtils.isEmpty(newText)) {
mArticulosList.setFilterText(newText);
}
//searchView.setQuery("", false);
//searchView.setIconified(true);
return true;
}
});
super.onCreateOptionsMenu(menu,inflater);
}
Pero no m funciona cuano entra al onQueryTextChange tiene el valor digitado por el usuario pero no funciona, creo que le setFiltertext es solo para una lista simple.
En mi caso el Cursor tiene mas de un campo por ejemplo el codigo, nombre, precio de un articulo
Como podria hacer para usar el filtro que digita el usuario
mi cursoradapter es este
public class ArticulosCursorAdapter extends CursorAdapter {
public ArticulosCursorAdapter(Context context, Cursor c) {
super(context, c, 0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
return inflater.inflate(R.layout.list_item_articulo,parent,false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
//referencias UI
TextView articuloText = (TextView) view.findViewById(R.id.tv_articulo);
TextView cantidadText = (TextView) view.findViewById(R.id.tv_cantidad_articulo);
TextView precioText = (TextView) view.findViewById(R.id.tv_precio_articulo);
//get valores
String articulo=cursor.getString(cursor.getColumnIndex(ContratoPedidos.Productos.NOMBRE));
String existencia=cursor.getString(cursor.getColumnIndex(ContratoPedidos.Productos.SALDO));
String precio=cursor.getString(cursor.getColumnIndex(ContratoPedidos.Productos.PRECIO));
//setup
articuloText.setText(articulo);
cantidadText.setText(existencia);
precioText.setText(precio);
}
}
Espero puedan ayudarme
Saludos
-
Fernando Siguenza