Boa noite tenho esse app funcionando normalmente ele faz pesquisa via sql direto no banco e me traz o resultado em outra activity ai vem a minha duvida:
atualmente tenho 4 editText para a entrada do usuario realizar a pesquisa , gostaria de utilizar um AutoCompleteTextView para sugerir os nomes ao digitar uma tecla nesses editText , porem nao sei como fazer para criar um String[] com o resultado de uma query do banco
tenho uma aplicação desktop que utiiza o mesmo banco , na aplicação desktop tenho o método abaixo para preencher uma lista com a query do banco
public ResultSet consultarRastreador(String temp){
Rastreador rst = new Rastreador();
JList lista;
DefaultListModel modelo = new DefaultListModel();
lista = new JList(modelo);
lista.setVisibleRowCount(4);
Connection c = ConexaoBD.getInstance();
modelo.removeAllElements();
ResultSet rs = null;
List<Rastreador> lrst = new ArrayList<Rastreador>();
int resp = 0;
try{
String sql = "select * from rastreador where placa like '%"+temp+"%' order by placa";
System.out.println(sql);
PreparedStatement pst = c.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next()& resp < 6){
rst.setPlaca(rs.getString("placa"));
lrst.add(rst);
System.out.println(rs);
modelo.addElement(rs.getString("placa"));
jList1.setModel(modelo);
resp ++;
}
} catch (SQLException ex){
System.out.println("Erro>"+ex.getMessage());
}
return null;
}
chamo ela assim na tela
if(jCheckBoxRastreador.isSelected()){
Rastreador rst = new Rastreador();
temp tmp = new temp();
tmp.setPesquisa(jList1.getSelectedValue());
frmPesquisaRastreadorLista pr = new frmPesquisaRastreadorLista(tmp.getPesquisa());
this.getParent().add(pr);
pr.setVisible(true);
sera que e possível fazer algo parecido no android??
Algumas coisas vão mudar (tipo o JList), claro, mas não custa tentar
criei esse metodo:
private void testeArrayList (){
BancoNovo conecta = new BancoNovo();
conecta.Conectar();
List<String> NomeDVR = new ArrayList<String>();
AutoCompleteTextView actv = findViewById(R.id.actv);
int linha = 0;
try {
conecta.executaSQL("SELECT nome FROM dados;");
while (conecta.rs.next()) {
NomeDVR.add(conecta.rs.getString("nome"));
Log.d("#String capturada",NomeDVR.get(linha).toString());
linha++;
}
}catch (Exception e) {
e.printStackTrace();
Log.d("#Erro autocomplete", e.getMessage());
} finally {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,NomeDVR);
actv.setAdapter(adapter);
Log.d("#Cheguei Aqui",NomeDVR.get(1).toString());
//conecta.desconecta();
}
}
porem ele não está preenchendo o autocomplete , pelo
Log.d("#String capturada",NomeDVR.get(linha).toString());
ele me traz os nomes do banco , acredito esta fazendo algum erro na hora de instanciar o adapter
Faz um tempinho que não mexo com Android, e acho que não é possível. O que vc pode fazer é: recupera essas informações, joga pra um List, e o list vc preenche o autocomplete
Resolvido com o seguinte método ;
private void testeArrayList (){
BancoNovo conecta = new BancoNovo();
conecta.Conectar();
List<String> NomeDVR = new ArrayList<String>();
String lista [];
AutoCompleteTextView actv = findViewById(R.id.actv);
int linha = 0;
try {
conecta.executaSQL("SELECT nome FROM dados;");
while (conecta.rs.next()) {
NomeDVR.add(conecta.rs.getString("nome"));
Log.d("#String capturada",NomeDVR.get(linha).toString());
linha++;
}
}catch (Exception e) {
e.printStackTrace();
Log.d("#Erro autocomplete", e.getMessage());
} finally {
Log.d("#Cheguei Aqui",NomeDVR.get(1).toString());
String dvrnomes[]=NomeDVR.toArray(new String[NomeDVR.size()]);
Log.d("ArrayString",dvrnomes.toString());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,dvrnomes);
actv.setAdapter(adapter);
//conecta.desconecta();
}
}