У меня ListView
с SimpleCursorAdapter
Я получаю сообщение об ошибке: –
java.lang.IllegalStateException: содержимое адаптера изменилось, но ListView не получил уведомление. Убедитесь, что содержимое вашего адаптера не изменяется из фонового потока, а только из потока пользовательского интерфейса. [в ListView (2131361944, класс android.widget.ListView) с адаптером (класс com.pocketpharmacist.adapter.DrugClassesListAdapter)]
Когда:-
В моем Fragment
я включил фильтрацию с помощью адаптера, и для фильтрации списка я получил один EditText
.
Теперь, 1) когда я начинаю вводить текст для фильтра, Виртуальная клавиатура оживает, и она начинает фильтровать с помощью списка
2) но настоящая фильтрация оживает, когда я прячу клавиатуру. и если я нажимаю на listItem с активной клавиатурой, это дает мне указанную выше ошибку, которая очевидна, поскольку данные не отражаются в пользовательском интерфейсе.
Углубившись вглубь, я узнал, что например я хочу искать ABCDE в списке. Я ввел ABC в Edittext, теперь, когда я добавляю D, он показывает мне фильтр для ABC, а теперь снова, если я добавлю E, он показывает фильтр для ABCD, Buuut Данные изначально изменены на заднем фоне. что является причиной ошибки.
Но я не могу понять, как это решить
notifyDataSetChanged не имеет эффектов, пожалуйста, помогите мне с этим, любая подсказка или идея могут работать
Услышьте мой код
Метод от TextWatcher
public void afterTextChanged(Editable s) {
searchAdapter.getFilter().filter(s.toString());
searchAdapter.notifyDataSetChanged();
drugListView.requestLayout();
}
Logcat, как показано ниже
06-30 18:14:54.299: E/AndroidRuntime(6922): FATAL EXCEPTION: main
06-30 18:14:54.299: E/AndroidRuntime(6922): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131361944, class android.widget.ListView) with Adapter(class com.pocketpharmacist.adapter.DrugClassesListAdapter)]
06-30 18:14:54.299: E/AndroidRuntime(6922): at android.widget.ListView.layoutChildren(ListView.java:1555)
06-30 18:14:54.299: E/AndroidRuntime(6922): at android.widget.AbsListView$CheckForTap.run(AbsListView.java:2840)
06-30 18:14:54.299: E/AndroidRuntime(6922): at android.os.Handler.handleCallback(Handler.java:587)
06-30 18:14:54.299: E/AndroidRuntime(6922): at android.os.Handler.dispatchMessage(Handler.java:92)
06-30 18:14:54.299: E/AndroidRuntime(6922): at android.os.Looper.loop(Looper.java:132)
06-30 18:14:54.299: E/AndroidRuntime(6922): at android.app.ActivityThread.main(ActivityThread.java:4028)
06-30 18:14:54.299: E/AndroidRuntime(6922): at java.lang.reflect.Method.invokeNative(Native Method)
06-30 18:14:54.299: E/AndroidRuntime(6922): at java.lang.reflect.Method.invoke(Method.java:491)
06-30 18:14:54.299: E/AndroidRuntime(6922): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
06-30 18:14:54.299: E/AndroidRuntime(6922): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
06-30 18:14:54.299: E/AndroidRuntime(6922): at dalvik.system.NativeStart.main(Native Method)
Спасибо