2014-02-24 20 views
0

我有一個ListView實現LoaderManager.LoaderCallbacks 的片段,有時點擊列表項不會觸發監聽器。我看到點擊項目突出顯示,但沒有更多。當onLoadFinished和onItemClick同時執行時會發生這種情況。 下面是代碼:Android LoaderManager.LoaderCallbacks <Cursor> adapter.swapCursor(data)

日誌是:

swapCursor - 第一次點擊初始化

- 對項目點擊
swapCursor - 更新數據
swapCursor - 更新數據

點擊 - 點擊項目 swapCursor - 更新數據

點擊項目,請參閱背景突出類似普通點擊
swapCursor - 這是問題所在,我點擊了某個項目,但是從以前的更新通知已丟棄的onClick,沒有關於點擊任何打印到日誌

點擊 - 下次點擊

回答

0

最後我找到了問題所在。

項目有一個數據庫與一些信息和INDEX列有名稱「ID」。

根據本教程http://code.tutsplus.com/tutorials/android-sdk_content-providers--mobile-5549

投影是簡單地用適配器使用列的列表。 ListView使用標題,並且可以在項目被點擊時提供一個標識爲 。爲了與適配器一起使用,id列必須命名爲「_id」。

之前解決列名問題是實現這一預測:

public static final String[] DEFAULT_PROJECTION = new String[] {"id _id", FolderProvider.FOLDER_COLUMN_ID, 
      FolderProvider.FOLDER_COLUMN_NAME}; 

那麼的ContentProvider和CursorAdapter的工作正確的,但一段時間onItemClick()被丟棄。

將「id」重命名爲「_id」可以解決問題。

這裏不錯LoaderManager.LoaderCallbacks教程http://code.tutsplus.com/tutorials/android-fundamentals-properly-loading-data--mobile-5673

相關問題