I want to filter the Atomic_Number and the Name of an item in ListView with multiple "Like?" without success. what is my mistake?
private ListView lvElementos;
private EditText etBuscar;
private SimpleCursorAdapter adaptador;
private Cursor cur_Elements;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lvElementos = (ListView) findViewById(R.id.LV_Elementos);
lvElementos.setFastScrollEnabled(true);
lvElementos.setTextFilterEnabled(true);
//ListView SQlite- Open Database
DatabaseHelper admin_Elements = new DatabaseHelper(this);
final SQLiteDatabase bd_Elements = admin_Elements.getWritableDatabase();
cur_Elements = bd_Elements.rawQuery("select _id, (Atomic_Number||'. '||Name)as Name from DataTP", null);
if (cur_Elements.moveToFirst()) {
String[] from = new String[]{"Name"};
int[] to = new int[]{android.R.id.text1};
adaptador = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cur_Elements, from, to, 0);
lvElementos.setAdapter(adaptador);
}
else {
Toast.makeText(this, "Error retrieving element's name database", Toast.LENGTH_SHORT).show();
}
//cur_Elements.close();
lvElementos.setOnItemClickListener(this);
etBuscar = (EditText) findViewById(R.id.et_buscar);
etBuscar.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
MainActivity.this.adaptador.getFilter().filter(cs.toString());
}
@Override
public void beforeTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable cs) {
// TODO Auto-generated method stub
}
});
//Check This
adaptador.setFilterQueryProvider(new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence constraint) {
final String[] Columns={"_id","(Atomic_Number||'. '||Name)as Name"};
return bd_Elements.query("DataTP",Columns,"Name like ?",new String[] { constraint + "%" },null,null,null,null);//Atomic_Number not filter
//return bd_Elements.query("DataTP",Columns,"Atomic_Number like ? OR Name like ?",new String[] { constraint + "%" },null,null,null,null);//Name not filter
}
});
}
I have done many variants in the setFilterQueryProvider but none has served. In the EditText me to try to filter only appears one of the two columns and the other disappears.
Aucun commentaire:
Enregistrer un commentaire