How to make a filter from a list with SPINNER

0

I have a question ...

I wanted to know if it is possible to filter a dynamic list with spinner , I know it can be with EditText but I do not know if it can be with Spinner ... or I do not know how to do it.

My code:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_resultado);

        spinner = (Spinner) findViewById(R.id.spinnerTipoResp);
        String[] valores = {"Tipo de Repuestos.....","Accesorios","Rotulo","Amortiguadores","Bujes"};
        spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, valores));
        ArrayList<DataLista> articulos=new ArrayList<>();
         data = new DataLista();

        data.setDescripcion("ROTULA SUP DODGE RAM 4X4 03/09");
        data.setId("VIE503182");
        data.setMarca("FORD");
        data.setRepuesto("Rotula");
        data.setmImage(R.drawable.todo);
        articulos.add(data);

        data = new DataLista();
        data.setDescripcion("BARRA CENTRAL FIAT 600 60/63");
        data.setId("VIE503182");
        data.setMarca("FIAT");
        data.setRepuesto("Accesorios");
        data.setImage(R.drawable.todo);
        articulos.add(data);


        data = new DataLista();
        data.setDescripcion("ROTULA SUP DODGE RAM 4X4 03/09");
        data.setId("VIE503182");
        data.setMarca("FORD");
        data.setRepuesto("Rotula");
        data.setImage(R.drawable.todo);
        articulos.add(data);

        data = new DataLista();
        data.setDescripcion("BARRA CENTRAL FIAT 600 60/63");
        data.setId("VIE503182");
        data.setMarca("FIAT");
        data.setRepuesto("Accesorios");
        data.setmImage(R.drawable.todo);
        articulos.add(data); 
    adapter = new Adaptergeneric(Resultado.this,articulos);

        lv = (ListView)findViewById(R.id.listView_eligida);

        lv.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id)
            {
                String eligido = (String) adapterView.getItemAtPosition(position);

               // Toast.makeText(adapterView.getContext(),eligido, Toast.LENGTH_SHORT).show();
    //Supongo aca deberia hacer el filtro  y traer el nuevo resultado de la lista

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent)
            {
                // vacio

            }
        });
    
asked by user62207 02.02.2018 в 18:11
source

1 answer

0

If you can friend, I'll explain how to do it. What you must do first is to rearm a new array of strings that only have those with the category you want. Then you must notify the adapter that there is a new source of information. As you have your code I think the simplest way to do it is to create a new adapter and add it to your list as follows.

    spinner = (Spinner) findViewById(R.id.spinnerTipoResp);
    String[] valores = {"Tipo de Repuestos.....","Accesorios","Rotulo","Amortiguadores","Bujes"};
    spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, valores));
    ArrayList<DataLista> articulos=new ArrayList<>();
     data = new DataLista();

    data.setDescripcion("ROTULA SUP DODGE RAM 4X4 03/09");
    data.setId("VIE503182");
    data.setMarca("FORD");
    data.setRepuesto("Rotula");
    data.setmImage(R.drawable.todo);
    articulos.add(data);

    data = new DataLista();
    data.setDescripcion("BARRA CENTRAL FIAT 600 60/63");
    data.setId("VIE503182");
    data.setMarca("FIAT");
    data.setRepuesto("Accesorios");
    data.setImage(R.drawable.todo);
    articulos.add(data);


    data = new DataLista();
    data.setDescripcion("ROTULA SUP DODGE RAM 4X4 03/09");
    data.setId("VIE503182");
    data.setMarca("FORD");
    data.setRepuesto("Rotula");
    data.setImage(R.drawable.todo);
    articulos.add(data);

    data = new DataLista();
    data.setDescripcion("BARRA CENTRAL FIAT 600 60/63");
    data.setId("VIE503182");
    data.setMarca("FIAT");
    data.setRepuesto("Accesorios");
    data.setmImage(R.drawable.todo);
    articulos.add(data); 
adapter = new Adaptergeneric(Resultado.this,articulos);

    lv = (ListView)findViewById(R.id.listView_eligida);

    lv.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id)
        {
            String eligido = (String) adapterView.getItemAtPosition(position);
            for(DataLista articulo : articulos){
                ArrayList<DataLista> informacionFiltrada = new ArrayList<>();
                if (articulo.getRepuesto().equals(eligido){
                    informacionFiltrada.add(articulo)
                }
                adapter = new Adaptergeneric(Resultado.this,informacionFiltrada);
                lv.setAdapter(adapter);
            }
           // Toast.makeText(adapterView.getContext(),eligido, Toast.LENGTH_SHORT).show();
//Supongo aca deberia hacer el filtro  y traer el nuevo resultado de la lista

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent)
        {
            // vacio

        }
    });

That should do the trick. I hope it's useful and very lucky

    
answered by 03.02.2018 в 16:33