2012-02-10 84 views
-1

我的Activity有一個ListView包含CheckedTextView。點擊一個項目後,我使用setItemChecked(position, true)使項目突出顯示。ListView.getSelectedItemPosition()意外返回0

但是,當活動剛剛啓動時,當我觸摸某個項目時,位置0中的項目也會突出顯示。我使用getSelectedItemPosition()來檢查,即使它處於觸摸模式(isinTouchMode = true),它會返回0但不是-1。

我滾動listView後,它正常工作,getSelectedItemPosition()正如預期的那樣返回-1。

爲什麼會發生這種情況?我只是希望活動在觸摸模式下處理而不是通過鍵輸入。

如果無法避免。我能糾正它嗎?我用ListView.setSelection(-1)但它沒有效果。

編輯:我以某種方式通過刪除一些冗餘代碼來解決問題。我想在ListView中指定的位置顯示在列表視圖頂部的項目,並強調當活動開始,所以我用下面的代碼:

ListView.setItemChecked(position, true); 
ListView.setSelectionFromTop(position, 0); 

什麼多餘的是(我使用相同的代碼兩次):

ListViewAdapter.notifyDataSetInvalidated(); 
ListView.setItemChecked(position, true); 
ListView.setSelectionFromTop(position, 0); 

雖然我解決了這個問題,但我仍然想知道後面會發生什麼。爲什麼當我「觸摸」listView兩次時選擇位置0?

回答

0

您是否爲檢查行設置了標記? 你必須在getView()中設置視圖的標籤。

之後,只有你可以考慮視圖的位置。 (例如:yourInflatedView.setTag(position);)

+0

我累了。它不起作用,它仍然返回0但不是-1。 – Yeung 2012-02-10 05:36:25