単純な 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) が表示されますが、表示されません。アイテムに触れると、必要に応じて強調表示されたままになります。標準の simple_list レイアウト フォーム、setFocusable(true)、setFocusableInTouchMode(true)、setItemChecked(2,true)、performItemClick() などの関数をすべて試してみましたが、setSelection() 呼び出しの前または後で、すべて失敗しました。役に立ちます。強調表示された項目を 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>