我一直在尋找幾天,試圖找到爲什麼我無法獲得簡單的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(WindowsMobile的)強調,但其實不然。我觸摸該項目,它仍然突出顯示,如我所願。我嘗試了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>