Android - Filtrar un ListView con SearchView

 
Vista:

Filtrar un ListView con SearchView

Publicado por Johnny Meneses (1 intervención) el 23/03/2020 21:21:20
Hola buenos dias.
Mi nombre es johnny, soy aprendiz y en estos momentos me encuentro creando una app, para una idea de negocio que tengo, pero estoy estancado, ya que no logro filtrar con un SearchView, un ListView que cree con un ImageView, y dos TextView. Todos los ejemplos que veo en youtube y en foros, no corresponden a mi caso ya que que por el tipo de Adaptador que utilice para rellenar los items del ListView, me presenta muchas dificultades. Agradeceria mucho una mano amiga que pueda ayudar.

ComidaActivity.java (Actividad principal donde se encuentra el ListView y SearchView"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class ComidaActivity extends AppCompatActivity {
    ImageView ip1;
    ImageView ip2;
    ImageView ip3;
    ImageView ip4;
    ImageView ip5;
    ImageView ip6;
    ImageView ip7;
    ImageView ip8;
    ImageView ip9;
    ImageView titulodomis;
    ListView listadatos;
    ArrayList<Datos> Lista;
    SearchView buscarrestaurante;
 
 
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_comida);
 
        ip1 = (ImageView) findViewById(R.id.ip1);
        ip2 = (ImageView) findViewById(R.id.ip2);
        ip3 = (ImageView) findViewById(R.id.ip3);
        ip4 = (ImageView) findViewById(R.id.ip4);
        ip5 = (ImageView) findViewById(R.id.ip5);
        ip6 = (ImageView) findViewById(R.id.ip6);
        ip7 = (ImageView) findViewById(R.id.ip7);
        ip8 = (ImageView) findViewById(R.id.ip8);
        ip9 = (ImageView) findViewById(R.id.ip9);
        titulodomis = (ImageView) findViewById(R.id.titulodomis);
        buscarrestaurante = (SearchView) findViewById(R.id.buscarrestaurante);
        listadatos = (ListView) findViewById(R.id.lstDatos);
        Lista = new ArrayList<Datos>();
 
        Lista.add(new Datos(1, "Black and White", "“La mejor comida rapida de la ciudad”", R.drawable.ic_restaurante1));
        Lista.add(new Datos(2, "Restaurant", "“Estamos para hacerte vivir una experiencia inolvidable”", R.drawable.ic_restaurante2));
        Lista.add(new Datos(3, "WOW", "“Los mejores platos de comida italiana”", R.drawable.ic_restaurante3));
        Lista.add(new Datos(4, "Cafeteria La Bella", "“Vén y disfruta de un buen café”", R.drawable.ic_restaurante4));
 
        Adaptador adaptador = new Adaptador(getApplicationContext(), Lista);
        listadatos.setAdapter(adaptador);
    }
}



Datos.java (Clase donde defino los tipos de datos por cada item del ListView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Datos {
    private int Id;
    private String Titulo;
    private String Detalle;
    private int Imagen;
 
    public Datos(int id, String titulo, String detalle, int imagen) {
        Id = id;
        Titulo = titulo;
        Detalle = detalle;
        Imagen = imagen;
    }
 
    public int getId() {
        return Id;
    }
 
    public void setId(int id) {
        Id = id;
    }
 
    public String getTitulo() {
        return Titulo;
    }
 
    public void setTitulo(String titulo) {
        Titulo = titulo;
    }
 
    public String getDetalle() {
        return Detalle;
    }
 
    public void setDetalle(String detalle) {
        Detalle = detalle;
    }
 
    public int getImagen() {
        return Imagen;
    }
 
    public void setImagen(int imagen) {
        Imagen = imagen;
    }
}


Adaptador.java (Adaptador que utilizo para rellenar el ListView con los datos)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class Adaptador extends BaseAdapter {
 
    Context contexto;
    List<Datos> ListaObjetos;
    ArrayList<Datos> Datos;
 
 
    public Adaptador(Context context, List<Datos> listaObjetos) {
        this.contexto = context;
        ListaObjetos = listaObjetos;
 
    }
 
    @Override
    public int getCount() {
        return ListaObjetos.size();
    }
 
    @Override
    public Object getItem(int position) {
        return ListaObjetos.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return ListaObjetos.get(position).getId();
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vista = convertView;
 
        LayoutInflater inflate = LayoutInflater.from(contexto);
        vista = inflate.inflate(R.layout.elementoslista,null);
 
        ImageView imagen = (ImageView) vista.findViewById(R.id.logorestaurant);
        TextView titulo = (TextView) vista.findViewById(R.id.titulorestaurante);
        TextView detalle = (TextView) vista.findViewById(R.id.detalletaurante);
 
        titulo.setText(ListaObjetos.get(position).getTitulo().toString());
        detalle.setText(ListaObjetos.get(position).getDetalle().toString());
        imagen.setImageResource(ListaObjetos.get(position).getImagen());
 
        return vista;
    }
}


Agradezco mucho si me pueden colaborar, lo que busco es filtrar con el SearchView, los items del ListView, por medio de el Titulo de cada item.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder