我的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但不是-1。 – Yeung 2012-02-10 05:36:25