我在Android中使用adapters
,在极少数情况下,该应用崩溃时为ListView
设置数据...请帮助。 例外的是如下Android版本4.4.4的java.lang.IllegalStateException
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.
Make sure your adapter calls notifyDataSetChanged() when its content changes.
[in ListView(2131558745, class android.widget.ListView)
with Adapter(class com.adapters.CustomToBeSyncAdapter)
这里是我的代码片段
private class ImportAsyncTask extends AsyncTask<Void, Integer, Integer> {
@Override
protected Integer doInBackground(Void... params) {
Realm realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
try {
RealmResults<AssetsActivitiesRealm> mResultsActivities = realm.where(AssetsActivitiesRealm.class).findAll();
for (int i = 0; i < mResultsActivities.size(); i++) {
AssetsActivitiesRealm mAssetsActivitiePj = mResultsActivities.get(i);
SyncPojoList.add(new SyncPojo(mAssetsActivitiePj.getBatch(), mAssetsActivitiePj.getItemCode()));
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
realm.close();
return 1;
}
@Override
protected void onPreExecute() {
showLoading();
}
@Override
protected void onPostExecute(Integer sum) {
try {
cancelLoading();
displayListView();
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void notifyAdapter() {
getActivity().runOnUiThread(new Runnable() {
public void run() {
listViewSync.setAdapter(null);
if (mdataAdapter != null) {
mdataAdapter.notifyDataSetChanged();
listViewSync.requestLayout();
}
}
});
}
private void displayListView() {
mdataAdapter = new CustomToBeSyncAdapter(getActivity(),
R.layout.custom_tobesync_row, SyncPojoList);
notifyAdapter();
listViewSync.setAdapter(mdataAdapter);
listViewSync.invalidate();
}
*确保您的适配器在其内容更改时调用notifyDataSetChanged()* - 请尝试将'notifyDataSetChanged()'应用于ListView以通知其背景更改。 – rupinderjeet
是的我已经调用notifyDataSetChanged()但仍然在极少数情况下崩溃..不知道如何解决这个错误 – Deepak
发生崩溃时发布确切的Logcat和代码,使用http://hastebin.com – rupinderjeet