<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                > 編寫:[kesenhoo](https://github.com/kesenhoo) - 原文:[http://developer.android.com/training/load-data-background/handle-results.html](http://developer.android.com/training/load-data-background/handle-results.html) 正如前面一節課講到的,你應該在 [onCreateLoader()](#)的回調里面使用CursorLoader執行加載數據的操作。Loader查詢完后會調用[Activity](# "An activity represents a single screen with a user interface.")或者FragmentActivity的[LoaderCallbacks.onLoadFinished()](#)將結果回調回來。這個回調方法的參數之一是[Cursor](#),它包含了查詢的數據。你可以使用Cursor對象來更新需要顯示的數據或者進行下一步的處理。 除了[onCreateLoader()](#)與[onLoadFinished()](#),你也需要實現[onLoaderReset()](#)。這個方法在CursorLoader檢測到[Cursor](#)上的數據發生變化的時候會被觸發。當數據發生變化時,系統會觸發重新查詢的操作。 ### Handle Query Results 為了顯示CursorLoader返回的Cursor數據,需要使用實現AdapterView的類,并為這個類綁定一個實現了CursorAdapter的Adapter。系統會自動把Cursor中的數據顯示到View上。 你可以在顯示數據之前建立View與Adapter的關聯。然后在[onLoadFinished()](#)的時候把Cursor與Adapter進行綁定。一旦你把Cursor與Adapter進行綁定之后,系統會自動更新View。當Cursor上的內容發生改變的時候,也會觸發這些操作。 例如: ~~~ public String[] mFromColumns = { DataProviderContract.IMAGE_PICTURENAME_COLUMN }; public int[] mToFields = { R.id.PictureName }; // 取得ListView的引用[原詞是句柄handle] ListView mListView = (ListView) findViewById(R.id.dataList); /* * 為ListView定義一個SimpleCursorAdapter */ SimpleCursorAdapter mAdapter = new SimpleCursorAdapter( this, // 當前上下文 R.layout.list_item, // 一個只有單行的文本的布局 null, // 暫時還沒有Cursor游標 mFromColumns, // 要使用游標的列 mToFields, // Layout fields to use 0 // No flags ); // 為View設置適配器 mListView.setAdapter(mAdapter); ... /* * 定義CursorLoader完成查詢時候的回調 */ @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { ... /* * 轉移查詢結果給適配器,并激發適配器更新前端的ListView數據 */ mAdapter.changeCursor(cursor); } ~~~ ### Delete Old Cursor References 當Cursor失效的時候,CursorLoader會被重置。這通常發生在Cursor相關的數據改變的時候。在重新執行查詢操作之前,系統會執行你的[onLoaderReset()](#)回調方法。在這個回調方法中,你應該刪除當前Cursor上的所有數據,避免發生內存泄露。一旦onLoaderReset()執行結束,CursorLoader就會重新執行查詢操作。 例如: ~~~ /* * CursorLoader被重置時調用。舉個栗子,當提供者中的數據發生變動Cursor變得陳舊 * 時會被調用。 */ @Override public void onLoaderReset(Loader<Cursor> loader) { /* * 清除適配器里對Cursor的引用,可以防止內存泄漏。 */ mAdapter.changeCursor(null); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看