I have this query layout with a Listview:
AftertypingRadioButton
andtypingthesearchparameterIwouldlikethelisttoappearwiththedatabasedata(detail,IhaveaListview
thatreturnsallthedataregisteredinthebankworkingnormally),butIIclickonsearchandnothinghappens,norreturnerror,I'musingthesameadapter
frommyotherlistthatisworkingnormally.Istheproblembecauselistview
isinthesameQueryActivity?
MyQueryActivity:
publicclassConsultaActivityextendsAppCompatActivity{privateLivrolivro=newLivro();privateRadioGroupradioGroup;privateEditTexteditText;privateListViewlvConsulta;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_consulta);radioGroup=(RadioGroup)findViewById(R.id.rdgOpcoes);editText=(EditText)findViewById(R.id.edtconsulta);lvConsulta=(ListView)findViewById(R.id.lvConsulta);}publicvoidconsultar(Viewview){LivroCRUDlivroCRUD=newLivroCRUD(this);try{switch(radioGroup.getCheckedRadioButtonId()){caseR.id.rbtnTitulo:livro.setTitulo(editText.getText().toString());List<Livro>listaTitulo=livroCRUD.buscarTitulo(livro);lvConsulta.setAdapter(newLivroAdapter(this,listaTitulo));Toast.makeText(this,"passou pelo processo......", Toast.LENGTH_SHORT).show();
break;
case R.id.rbtnAutor:
livro.setAutor(editText.getText().toString());
List<Livro> listaAutor = livroCRUD.buscarAutor(livro);
lvConsulta.setAdapter(new LivroAdapter(this, listaAutor));
break;
case R.id.rbtnEditora:
livro.setEditora(editText.getText().toString());
List<Livro> listaEditora = livroCRUD.buscarEditora(livro);
lvConsulta.setAdapter(new LivroAdapter(this, listaEditora));
break;
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "Não foi possivel realizar a consulta....", Toast.LENGTH_SHORT).show();
}
}
}
One of the search methods by parameters:
EDIT: change query method after @ramaral's tips
//BUSCAR POR TITULO
public List<Livro> buscarTitulo(String titulo) throws Exception{
List<Livro> lista = new ArrayList<Livro>();
String[] colunas = new String[]{"_id","titulo","autor","editora"};
Cursor cursor = db.query("livro", colunas, "titulo= ?",new String[]{titulo},null,null,null);
//Percorre o cursor se tiver registos
//Se não for nulo move para o primeiro registo
if(cursor != null && cursor.moveToFirst()){
do {
Livro livroTitulo = new Livro();
//retornar os valores e adiciona na lista
livroTitulo.setId(cursor.getInt(0));
livroTitulo.setTitulo(cursor.getString(1));
livroTitulo.setAutor(cursor.getString(2));
livroTitulo.setEditora(cursor.getString(3));
lista.add(livroTitulo);
}while (cursor.moveToNext());
}
return (lista);
}