从可检查的菜单中处理选定的项目

Handling selected items from a checkable menu

我正在使用 this 教程创建一个包含可检查项的子菜单。所以,到目前为止一切正常,但我不知道如何处理选定的项目,因为我是可序列化的新手。这是教程

的 link

   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]);
         }

        }

您从该代码中得到任何错误吗?如果不是,则意味着您的 settingList 已使用来自 data.getSerializableExtra ( SETTING_CHECK_BOX ); 的解析值正确初始化,这是 SettingCheckBox 对象的列表。根据您提供的 link,包含 SettingCheckBox 对象 class 的代码。您如何处理对象内的数据取决于您的用例。


编辑:回应评论。

如果 names,你的意思是 SettingCheckBox 文本描述,你可以遍历你的 settingList直接这样:

for(int i = 0; i < settingList.size(); i++){
    Log.d("***Checked items*", settingList.get(i).getDescription());
}

@McAwesomville,谢谢你 help.Got 它的所有工作!这是我根据您的建议得出的代码 :) 干杯!

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK || data == null)
            return;
        settingList = (ArrayList<SettingCheckBox>) data.getSerializableExtra(SETTING_CHECK_BOX);

        for (int i = 0; i <settingList.size(); i++){
            if (settingList.get(i).getChecked()){
                Log.d("**Checked Item**",String.valueOf(settingList.get(i).getDescription()));
            }
        }


    }