Когда я выполняю поиск, набирая тогда, если любая строка равна этому поиску, тогда все данные отображаются не только в результате поиска. И если любое слово не соответствует, то не отображается ничего, что в порядке, но как очистить другие данные без поиска данных? Я был опробован адаптер.clean () и notifyDatasetChanger (). Это раздавить приложение, когда поиск и не работает.
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
(MainActivity.this).adapter.getFilter().filter(charSequence);
for(Medicine array:medicineList){
String name=array.getDrugs().toLowerCase();
if(name.contains(charSequence)){
adapter = new ListViewAdapter(medicineList, getApplicationContext());
//adding the adapter to listview
listView.setAdapter(adapter);
}
}
}
Я использую залп для получения данных Json. Полный код
for (int i = 0; i < medicineArray.length(); i++) {
JSONObject medicineObject = medicineArray.getJSONObject(i);
Medicine medicine = new Medicine(medicineObject.getString("id"), medicineObject.getString("drugs"),
medicineObject.getString("indications"),medicineObject.getString("therapeutic_class"),
medicineObject.getString("pharmacology"),medicineObject.getString("dosage"),
medicineObject.getString("interaction"), medicineObject.getString("contraindications"),
medicineObject.getString("side_effects"),medicineObject.getString("pregnancy"),
medicineObject.getString("precautions"),medicineObject.getString("storage"));
//adding the medicine details to medicinelist
medicineList.add(medicine);
}
//creating custom adapter object
adapter = new ListViewAdapter(medicineList, getApplicationContext());
//adding the adapter to listview
listView.setAdapter(adapter);
Search.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { }
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
(MainActivity.this).adapter.getFilter().filter(charSequence);
for(Medicine array:medicineList){
String name=array.getDrugs().toLowerCase();
if(name.contains(charSequence)){
adapter = new ListViewAdapter(medicineList, getApplicationContext());
//adding the adapter to listview
listView.setAdapter(adapter);
}
}
}
@Override
public void afterTextChanged(Editable editable) { }
});
}