リストビューにたくさんのチェックボックスがあるとします。
DB からいくつかのデータをフェッチして、それらのチェックボックスをオンに設定しています。
各チェックボックスには、いくつかの特定の checkedListeners があります。
DBからチェックする必要があることが判明した場合にチェックボックスがチェックされている場合、OnCheckedChangedListener
機能しますか?
私は問題に直面しています、
if (type.equals("technicalskills") || type.equals("programmingskills")) {
listChecked = Base.user_technical_skills.split(",");
setChecked(mHolder.mCheck,listChecked,i);
if (i == 1 && type.equals("technicalskills") && ((Base.user_technical_skills.contains("MS-Office") && listChecked.length > 1) || (!Base.user_technical_skills.contains("MS-Office") && listChecked.length > 0))) {
position == 1;
mHolder.mCheck.setChecked(true);
//UserDetails.prog_listView_container.setExpanded(true);
}
}
mHolder.mCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, final boolean b) {
if(type.equals("technicalskills") && position == 1) {
if (b) {
UserDetails.prog_listView_container.expand();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
UserDetails.prog_listView.setAlpha(0.0f);
UserDetails.prog_listView.animate()
.alpha(1.0f)
.setDuration(800);
}
} else {
UserDetails.prog_listView_container.collapse();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
UserDetails.prog_listView.animate()
.alpha(0.0f)
.setDuration(800);
}
}
}
}
});
このコード全体は、BaseAdapter を拡張する Adapter の getView() メソッド内にあります。
mcheck.setChecked(true);
コードで設定している場合、OnCheckedChangedListener
実行されません。