使用 notifyDataSet 在 android 数组适配器中更改时出错
2022-09-02 20:13:39
11-06 19:52:25.958: E/AndroidRuntime(29609): java.lang.IllegalStateException: 适配器的内容已更改,但 ListView 未收到通知。确保适配器的内容不是从后台线程修改的,而是仅从 UI 线程修改的。[in ListView(-1, class android.widget.ListPopupWindow$DropDownListView) with Adapter(class com.example.parkfoxxlight_android.PlacesAutoCompleteAdapter)]
完整日志:http://pastebin.com/Hx7k28Rm
适配器的完整代码:http://pastebin.com/TfH1bXE3 我正在使用 https://developers.google.com/places/training/autocomplete-android 中的示例,并且它具有相当默认的代码,因此Google代码中似乎存在错误?
该应用程序仅偶尔崩溃,并显示上述错误消息。
protected void publishResults(CharSequence constraint,
FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
活动 http://pastebin.com/FYzYtvXY:
public class CityActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.city);
AutoCompleteTextView autoCompView = (AutoCompleteTextView) findViewById(R.id.autocomplete_city);
PlacesAutoCompleteAdapter ad = new PlacesAutoCompleteAdapter(this);
ProgressBar b = (ProgressBar)findViewById(R.id.progressBar1);
ad.setLoadingIndicator(b);
autoCompView.setAdapter(ad);
}
}
任何想法如何解决这个问题?我在安卓4.3上。