国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

CursorAdapter監(jiān)聽數(shù)據(jù)變化通知界面刷新

2019-11-06 09:35:03
字體:
供稿:網(wǎng)友

ContentObserver 監(jiān)聽數(shù)據(jù)庫變化

AbstractCursor.setNotificationUri(ContentResolver cr, Uri notifyUri) -> ContentResolver.registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer, int userHandle)AbstractCursor.registerContentObserver(ContentObserver observer)SelfContentObserver.onChange(boolean selfChange) -> AbstractCursor.(boolean selfChange)

DataSetObserver 監(jiān)聽cursor close/deactivate/requery

AbstractCursor.registerDataSetObserver(DataSetObserver observer)AbstractCursor.close() / deactivate() -> AbstractCursor.onDeactivateOrClose() -> DataSetObservable.notifyInvalidated()AbstractCursor.requery() -> DataSetObservable.notifyChanged()

notifyDataSetChanged 與 notifyDataSetInvalidated 區(qū)別 (@AdapterView.java): 前者會保留listview的部分狀態(tài),而后者會重置listview的狀態(tài)

class AdapterDataSetObserver extends DataSetObserver { PRivate Parcelable mInstanceState = null; @Override 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(); } @Override public void onInvalidated() { mDataChanged = true; if (AdapterView.this.getAdapter().hasStableIds()) { // Remember the current state for the case where our hosting activity is being // stopped and later restarted mInstanceState = AdapterView.this.onSaveInstanceState(); } // Data is invalid so we should reset our state mOldItemCount = mItemCount; mItemCount = 0; mSelectedPosition = INVALID_POSITION; mSelectedRowId = INVALID_ROW_ID; mNextSelectedPosition = INVALID_POSITION; mNextSelectedRowId = INVALID_ROW_ID; mNeedSync = false; checkFocus(); requestLayout(); } public void clearSavedState() { mInstanceState = null; } }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高淳县| 临夏县| 颍上县| 察雅县| 闽清县| 邢台县| 上林县| 东平县| 攀枝花市| 略阳县| 鄢陵县| 东辽县| 贵德县| 柯坪县| 商都县| 长宁区| 嘉禾县| 临漳县| 改则县| 蓝山县| 南和县| 定远县| 平利县| 临夏市| 泰宁县| 修文县| 福泉市| 兴隆县| 芮城县| 都昌县| 嘉黎县| 屏南县| 芜湖县| 铜山县| 凉山| 绿春县| 额尔古纳市| 泰兴市| 江安县| 翼城县| 恭城|