Я получаю ошибку ниже при выборе элемента в своем AmazingListView. Я загружаю данные через AsyncTask (inBackround()) и вызываю adapter.notifyDataSetChanged() каждые 20 элементов, которые загружаются, и метод onPostExecute. Список загружается без каких-либо проблем, и когда я выбираю элемент после загрузки списка, у меня нет проблем ... Я получаю эту ошибку только при выборе элемента во время загрузки списка. Существует проблема, открытая в AmzingListView here, но оба решения мне не помогли. Любые идеи были бы восприимчивыми.Ошибка при загрузке AmazingListView с помощью AsyncTask
Ошибка:
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(2131034170, class com.foound.widget.AmazingListView) with Adapter(class android.widget.HeaderViewListAdapter)]
Код:
private ArrayList<object> list;
private class AsyncTask extends AsyncTask<Void, object, Void>
{
@Override
protected void onPreExecute()
{
list = populatList();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... urls)
{
Log.i("CallLogActivity", "CallLog is Loading");
for (int i = 0; i < list.size(); i++)
{
String str = getString();
boolean bool = getBoolean();
Object c = new Object(str,bool);
publishProgress(c);
}
//Doing Work Here!!
return null;
}
@Override
protected void onPostExecute(Void result)
{
adapter.notifyDataSetChanged();
}
@Override
protected void onProgressUpdate(object... object)
{
count++
updatelist(object);
if (adapter != null)
{
if (count > 20)
{
adapter.notifyDataSetChanged();
count = 0;
}
}
super.onProgressUpdate(object);
}
}
Вы меняете содержимое адаптера в коде "do work"? (поскольку я отмечаю, что ваш postExecute является «Void») – Tom
yes Я изменяю содержимое адаптера во время «выполнения работы». Я вижу, что он постоянно обновляется. Проблема в том, когда я выбираю элемент в списке. – user1163234
Вы проверили, не сообщает ли об этом сообщение об ошибке, как первый шаг, поместите части кода, которые изменяют адаптер в runOnUIThread (Runnable ...). (http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)) – Tom