2011-12-28 72 views
0

我已經被這種常見問題困住了,但我仍然無法解決它。當我的應用程序的活動開始時,設備默認處於觸摸模式。無法選擇帶有setFocusableInTouchMode的ListView項目(true)

我想,當用戶點擊一些按鈕來實現一些ListView項,選擇和使用它下面的代碼:

... 
       // my activity, inside onCreate() 
       myListView.setFocusable(true); 
       myListView.setFocusableInTouchMode(true); 

       button.setOnClickListener(
        new OnClickListener { 

         public void onClick(View v) { 
          myListView.setSelection(specifiedPosition); 
         } 
        } 
       ); 
       ... 

但即使有這種邏輯的ListView只設置指定的項目自身所具有的頂部和不突出顯示它們。

我也嘗試使用requestFocus(),但它沒有幫助我。我怎麼解決這個問題?

回答

0

簡短的回答:setSelection不會做你想要的 - 它意味着不同的事情。

按照爲setSelection文檔:

如果觸摸模式,則該項目將不被選擇,但它仍然會 適當地定位。

這就是爲什麼你看到定位。

也看到觸摸模式文檔: http://developer.android.com/resources/articles/touch-mode.html

在觸摸模式下,沒有重點,沒有選擇。只要用戶輸入 觸摸模式,網格列表中的任何選定項目 都會取消選中。同樣,當用戶進入觸摸模式時,所有關注的小部件都會變得不重點。下圖展示了用戶在選擇帶軌跡球的項目後觸摸列表時發生的情況。


對於可能的解決方案請參見以下職位: Highlight ListView selected row