2014-03-12 21 views
0

我的清單有問題。當用戶檢查其中一個項目並驗證時,檢查的項目不會被存儲。每次打開一個新的對話框時,清單都會重置。清單不要留下來

我該如何儲存它們?

這裏是我的代碼:

else if(position == 1){ 
final ArrayList<Integer> mSelectedItems = new ArrayList<Integer>(); 
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setTitle("Titre") 
     .setMultiChoiceItems(R.array.liste_choix, null, 
       new DialogInterface.OnMultiChoiceClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which, 
         boolean isChecked) { 
        if (isChecked) { 
         mSelectedItems.add(which); 
        } else if (mSelectedItems.contains(which)) { 
         mSelectedItems.remove(Integer.valueOf(which)); 
        } 
       } 
     }) 
     .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
        // User clicked OK, so save the mSelectedItems results somewhere 
        // or return them to the component that opened the dialog 
       } 
      }) 
     .setNegativeButton(R.string.annuler, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       } 
      }); 

builder.show(); 

}

回答

0

我認爲這是關係到mSelectedItems。因爲上面的所有內容都是在條件之後發生的,所以看起來好像這些都是在一個方法中發生的。當您每次訪問這部分條件時都會創建一個新的mSelectedItems實例,每次啓動時該列表都將爲空。我建議你做的是:

(1)實際上使mSelectedItems成員或者實例變量,如果這是你的意圖,這樣一來它不是重新創建每次你得到的那部分代碼時

(2)然後你所要做的就是檢查上次在this post之間選擇的是哪一個。

+0

謝謝你的回答。你說的對(1)但(2)不是我要找的。當有人存在我的應用程序時,我想讓複選框保持檢查狀態。所以,當他再次回來時,他們仍然被檢查。 – user3410806

+0

因此,您需要將選擇存儲在某處 - 您是否使用SharedPreferences,SQLite,外部網絡服務器或其他持久性存儲方法進行了研究? 'SharedPreferences'可能是最容易使用的。如果您只是將數據存儲在那裏,然後在下次人員回來時重新加載,則可以用這種方式進行存儲。你也可以使用'SavedInstanceState'來做同樣的事情。 – Rarw

相關問題