2012-12-25 36 views
0

我一直在尋找幾天,試圖找到爲什麼我無法獲得簡單的ListView來突出顯示初始選擇 - 就像選擇已被觸摸一樣。我已閱讀關於觸摸模式的討論,但仍無法找到解決方案。初始選擇在ListView中不突出顯示?

我的代碼的簡化版本是:

public class TestList extends Activity { 

    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    setContentView(R.layout.listmain); 
    // Layout contains just a ListView with id list 
    final ListView listView = (ListView) findViewById(R.id.list); 

    String[] values = new String[] {"Android","iPhone","WindowsMobile", 
     "Blackberry","WebOS","Ubuntu","Windows7","Max OS X","Linux","OS/2"}; 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_checked, values); 
    listView.setAdapter(adapter); 

    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    listView.setSelector(android.R.color.holo_orange_dark); 

    listView.requestFocusFromTouch(); 

    listView.post(new Runnable() { 
     @Override 
     public void run() { 
      listView.setSelection(2); 
     } 
    }); 

    } 
} 

產生的ListView控件應顯示項目2(WindowsMo​​bile的)強調,但其實不然。我觸摸該項目,它仍然突出顯示,如我所願。我嘗試了setSelection()調用之前或之後的所有標準simple_list佈局形式,諸如setFocusable(true),setFocusableInTouchMode(true),setItemChecked(2,true),performItemClick()之類的函數 - 但全部爲no無濟於事。 如果我嘗試在GetView()中設置突出顯示的項目,用戶選擇其他項目的功能就會丟失。 任何人都可以告訴我如何以編程方式設置初始高亮項目而不禁用用戶更改選擇的功能嗎?

<?xml version="1.0" encoding="utf-8"?> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="#FFCC00" 
    android:dividerHeight="1dp" > 
</ListView> 

回答

0

看來這個問題是由ListView選擇器不能正常工作的事實引起的。例如,我發現,如果我使用帶有白色背景的選擇器,則我的初始選擇將突出顯示,但只需將顏色更改爲白色以外的其他顏色,並且不起作用!

所以代碼更改爲:

listView.setSelector(R.drawable.selector); 

和selector.xml是:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    <item android:drawable="@android:color/holo_orange_dark" android:state_pressed="true"/> 
    <item android:drawable="@android:color/holo_green_light" android:state_selected="true"/> 
    <item android:drawable="@android:color/holo_green_dark" android:state_activated="true"/> 
    <item android:drawable="@android:color/white" /> 
</selector> 

我曾嘗試過各種選擇器,包括後臺單獨選擇器。有些工作,有些則不。有些工作是在第一次加載apk時運行的,但是當應用程序再次運行時不工作。