Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Filtro de Pesquisa

Tenho uma duvida em relação a Consultas.

Quero fazer uma consulta com 5 campos,que me retorne uma lista, só que pra fazer a validacao de 5 campos vai ficar muito extenso meu codigo. Queria uma sugestao para realizar estas validaçoes;

 public List<Veiculo> ConsultaVeiculos(String campoMarca, String campoAno, String campoModelo, String campoPlaca) {
       String sql = "SELECT * FROM Vehicle;";
       SQLiteDatabase db = getReadableDatabase();
       Cursor c = db.rawQuery(sql, null);

       List<Veiculo> veiculos = new ArrayList<Veiculo>();
       List<Veiculo> veiculosConsulta = new ArrayList<Veiculo>();
       while (c.moveToNext()){
           Veiculo veiculo = new Veiculo();
           veiculo.setId(c.getLong(c.getColumnIndex("id")));
           veiculo.setPlaca(c.getString(c.getColumnIndex("placa")));
           veiculo.setModelo(c.getString(c.getColumnIndex("modelo")));
           veiculo.setAno(c.getString(c.getColumnIndex("ano")));
           veiculo.setMarca(c.getString(c.getColumnIndex("marca")));

           veiculos.add(veiculo);
       }

       for(Veiculo v : veiculos) {

           if(v.getMarca().toString().matches(campoMarca) && campoAno.isEmpty() && cam){
               veiculosConsulta.add(v);
          }
           if(v.getAno().toString().matches(campoAno)){
               veiculosConsulta.add(v);
           }
           if(v.getModelo().toString().matches(campoModelo)){
               veiculosConsulta.add(v);
           }
           if(v.getPlaca().toString().matches(campoPlaca)){
               veiculosConsulta.add(v);
           }

    .
    .
    .
    .
    .
       }
       return veiculosConsulta;

   }
}
1 resposta
solução!

Oi Rodrigo, tenho 2 sugestões. A consulta pode ser feita usando o like do sql, vai facilitar o seu código e você vai deixar o trabalho de busca para quem entende mais, que é o banco de dados.

Uma outra sugestão, talvez fora do escopo, é que você pode receber um objeto que represente a consulta. Algo assim:

ConsultaVeiculos(Veiculo veiculo)

Caso não queira todas as informações do veiculo, cria uma outra classe só com o que precisa :).