2016-05-30 12 views
0

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

     } 
+0

データを取得するときに、 'data.getSerializableExtra(SETTING_CHECK_BOX);'が適切だと思います。あなたがそれを続行することに決心したなら、私の答えをもう一度試してください(iterating中にチェッカー 'setList.get(i).isChecked()'を追加してください)。私はそれが正しいと確信しています。乾杯! –

+1

'Log.i(" *** Context Menu * "、String.valueOf(settingList.get(i).getChecked()));'チェックされたすべてのリストをtrueにし、そうでないfalseを返しました。今、else文を使用して説明を取得しようとしています。 – choman

+1

私の答えで前のコメントで述べたように 'if else'ステートメントだけを置いてください。私はそれだけで大丈夫だと思います。乾杯! :D –

答えて

1

このコードからエラーが発生していますか?そうでない場合は、が、data.getSerializableExtra (SETTING_CHECK_BOX);という解析された値で正しく初期化されていることを意味します。これはSettingCheckBoxオブジェクトのリストです。あなたが提供したリンクから、SettingCheckBoxオブジェクトクラスのコードが含まれています。オブジェクト内のデータで行うことは、ユースケースによって異なります。


EDIT:コメントへの応答で。

によって、あなたはSettingCheckBoxテキスト記述を意味する場合は、直接そのようなあなたのsettingListを反復処理することができます。

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

私は自分のコードを//更新しました。基本的には、チェックされたすべてのアイテムの名前が必要です。 – choman

+0

@choman私の編集を参照してください。 –

+0

はい、名前で、SettingCheckBoxのテキスト記述を意味していました。あなたが提供したコードで、ステータスに関係なく、ArrayListに最初に追加したアイテムをすべて取得するだけです(チェックされているかチェックされていません)。私の編集を確認してください。あなたが私にチェックされたアイテムだけを手伝ってもらえるといいと思っていました。 – choman

0

@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())); 
      } 
     } 


    } 
+0

ようこそ。まあ。それは私の答えに似ています。コメントの詳細を加えてください。いずれかの方法。受け入れられた回答を選択する必要があります。あなたは自分の答えか自分の答えを受け入れることができます。適切に答えるだけでタグ付けするだけです。乾杯! :D –

関連する問題