【发布时间】:2016-06-03 21:59:06
【问题描述】:
我正在使用this 教程创建一个带有可检查项目的子菜单。所以,到目前为止一切正常,但我不知道如何处理选定的项目,因为我是可序列化的新手。这是教程的链接
https://stackoverflow.com/questions/7072347/how-to-select-multiple-checkboxes-in-submenu-on-android?answertab=active#tab-top
public static final String SETTING_CHECK_BOX = "SETTING_CHECK_BOX";
private ArrayList < SettingCheckBox > settingList;
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
settingList = new ArrayList < SettingCheckBox > ();
settingList.add ( new SettingCheckBox ( "Option A" ) );
settingList.add ( new SettingCheckBox ( "Option B" ) );
// ... add more items
// restore any previously saved list
if ( savedInstanceState != null ) {
settingList = (ArrayList < SettingCheckBox >) savedInstanceState.getSerializable ( SETTING_CHECK_BOX );
}
// ...
}
protected void onActivityResult ( int requestCode , int resultCode , Intent data ) {
if ( resultCode != RESULT_OK || data == null )
return;
settingList = (ArrayList < SettingCheckBox >) data.getSerializableExtra ( SETTING_CHECK_BOX );
//how can I log print the list of items that have been checked
// What should go here ? such that i can do other things after getting a list of items that were checked ?
//This is my try
Object[] mStringArray = settingList.toArray();
for(int i = 0; i < mStringArray.length ; i++){
Log.d("***Checked items*",(String)mStringArray[i]);
}
}
【问题讨论】:
-
我认为
data.getSerializableExtra ( SETTING_CHECK_BOX );在检索数据时很好。如果您决定继续它,请再次尝试我的答案(在迭代时添加检查器if settingList.get(i).isChecked())。我很确定这是正确的。干杯! -
Log.i("***Context Menu*", String.valueOf(settingList.get(i).getChecked()));给了我所有列表为 true 已检查和 false 未检查。现在,尝试使用 if else 语句获取描述。 -
是的。只需将
if else声明放在我之前的评论中提到的答案中即可。我认为到那时一切都好。干杯! :D