Поиск не работает правильно в Json с залпом (ListView) - PullRequest
0 голосов
/ 20 октября 2019

Когда я выполняю поиск, набирая тогда, если любая строка равна этому поиску, тогда все данные отображаются не только в результате поиска. И если любое слово не соответствует, то не отображается ничего, что в порядке, но как очистить другие данные без поиска данных? Я был опробован адаптер.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) { }
    });
}
...