2013/03/18
OnItemClickListener.onItemClick() の中で 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 件のコメント:
コメントを投稿