編輯:關於Android編程
就像上節課所說的,我們應該在onCreateLoader()內使用CursorLoader來加載數據。那麼在數據加載完畢之後,加載結果會通過LoaderCallbacks.onLoadFinished()方法傳回到實現類中。該方法的其中一個參數為包含查詢結果的Cursor對象。你可以通過這個對象來更新UI數據或者用它來做進一步的操作。
除了onCreateLoader()及onLoadFinished()這兩個方法之外,還應當實現onLoaderReset()方法。這個方法會在上面返回的Cursor對象所關聯的數據發生變化時調用。如果數據發生了變化,那麼Android框架會重新進行查詢。
為了顯示Cursor對象中的數據,這裡需要實現AdapterView的相關方法以及CursorAdapter的相關方法。系統會自動的將Cursor中的數據轉換到View上。
你可以在展示數據之前將數據與Adapter對象進行關聯,這樣的話系統才會自動的更新View:
public String[] mFromColumns = { DataProviderContract.IMAGE_PICTURENAME_COLUMN }; public int[] mToFields = { R.id.PictureName }; // Gets a handle to a List View ListView mListView = (ListView) findViewById(R.id.dataList); /* * Defines a SimpleCursorAdapter for the ListView * */ SimpleCursorAdapter mAdapter = new SimpleCursorAdapter( this, // Current context R.layout.list_item, // Layout for a single row null, // No Cursor yet mFromColumns, // Cursor columns to use mToFields, // Layout fields to use 0 // No flags ); // Sets the adapter for the view mListView.setAdapter(mAdapter); ... /* * Defines the callback that CursorLoader calls * when it's finished its query */ @Override public void onLoadFinished(Loaderloader, Cursor cursor) { ... /* * Moves the query results into the adapter, causing the * ListView fronting this adapter to re-display */ mAdapter.changeCursor(cursor); }
CursorLoader會在Cursor處於無效狀態時對其進行重置。這種事件會經常發生,因為Cursor所關聯的數據會經常發生變化。在重新查詢之前,系統會調用所實現的onLoaderReset()方法。在該方法內,應將當前Cursor的所持有的引用置空,以防止內存洩露。一旦onLoaderReset()方法執行完畢,CursorLoader就會重新進行查詢。
/* * Invoked when the CursorLoader is being reset. For example, this is * called if the data in the provider changes and the Cursor becomes stale. */ @Override public void onLoaderReset(Loaderloader) { /* * Clears out the adapter's reference to the Cursor. * This prevents memory leaks. */ mAdapter.changeCursor(null); }
原文地址:http://android.xsoftlab.net/training/load-data-background/handle-results.html
1二維碼掃描登陸1,web端生成二維碼,傳遞uuid,並存入數據庫2,web端輪訓查詢信息,是否有數據庫掃描二維碼信息3,手機端掃描二維碼,獲取UUID,傳遞用戶名、密碼
ListView是android中最常用的控件之一。 在實際運用中往往會遇到一次性加載全部數據過多,需要分頁加載增加程序運行效率! 本demo是將更新的監聽放在listv
Android實現屏蔽微信拉黑和刪除聯系人功能,廢話不多說,具體如下:實現效果:讓微信永遠彈不出那個刪除的對話框不就相當於屏蔽掉該功能了嗎?哈哈效果如圖:實現原理:1.我
1.初始置換/IP置換// 初始置換表 private static final int[] IP_Table = { 58, 50, 42, 34, 26, 18, 1