作成した ListView に問題があります。項目をクリックしたときに項目が選択されるようにしたいのです。
このコードは次のようになります。
protected void onResume() {
...
ListView lv = getListView();
lv.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
Log.v(TAG, "onItemSelected(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
public void onNothingSelected(AdapterView<?> adapterView) {
Log.v(TAG, "onNothingSelected(...) => selected: " + getSelectedItemPosition());
}
});
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) {
lv.setSelection(pos);
Log.v(TAG, "onItemClick(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
});
...
}
これを実行して 2 番目の項目 (つまり pos=1) をクリックすると、次のようになります。
04-03 23:08:36.994: V/DisplayLists(663): onItemClick(..., 1,...) => selected: -1
つまり、OnItemClickListener が適切な引数で呼び出され、setSelection(1) を呼び出しても、項目が選択されておらず (したがって、OnItemSelectedListener.onItemSelected(...) も呼び出されません)、getSelectedItemPosition() は、 setSelection(1) 呼び出し。
私は何が欠けていますか?
マイケル
PS .: 私のリストには>=2 要素があります...