2013/03/18
OnItemClickListener.onItemClick() の中で isChecked() を呼んではいけない?
穀風: onListItemClick() の中で isChecked() を呼んではいけない? というエントリを書きましたが、同様に OnItemClickListener.onItemClick() の中ではどうなのか、調べてみました。
public class MainActivity extends ListActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] listItems = { "1", "2", "3" };
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
ListAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, listItems);
setListAdapter(adapter);
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckedTextView cv = (CheckedTextView) view;
Log.d(TAG, "isChecked " + cv.isChecked());
}
});
}
}
これを、Android 4.0.4 のエミュレータで動作させると以下の通り
// OFF → ON isChecked false // ON → OFF isChecked true
Android 4.2 のエミュレータで動作させると以下の通り
// OFF → ON isChecked true // ON → OFF isChecked false
やはり逆転してしまいました。
先程も書いたとおり、とりあえずの対策は出来ると思いますが、正しい対処方法がわかりません…
0 件のコメント:
コメントを投稿