android adapter的更新

06-21 12:00:02.473: ERROR/AndroidRuntime(29916): 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(2131034122, class android.widget.ListView) with Adapter(class android.widget.SimpleAdapter)]

说明了,adapter里面的数据更新(content)不能在在后台,否则会概率性的报错。
可能后台listview adapter会定时看content有否更新。总之

Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.

看过了
if (mItemCount == 0) {
                resetList();
                invokeOnItemScrollListener();
                return;
            } else if (mItemCount != mAdapter.getCount()) {
                throw new 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(" + getId() + ", " + getClass() 
                        + ") with Adapter(" + mAdapter.getClass() + ")]");
            }

count是创建、更新或者notify时候存的
public void onChanged() {
            mDataChanged = true;
            mOldItemCount = mItemCount;
            mItemCount = getAdapter().getCount();

            // Detect the case where a cursor that was previously invalidated has
            // been repopulated with new data.
            if (AdapterView.this.getAdapter().hasStableIds() && mInstanceState != null
                    && mOldItemCount == 0 && mItemCount > 0) {
                AdapterView.this.onRestoreInstanceState(mInstanceState);
                mInstanceState = null;
            } else {
                rememberSyncState();
            }
            checkFocus();
            requestLayout();
        }

所以渲染之前如果改了adapter的size,那,shi吧

你可能感兴趣的:(thread,android,UI)