Android 复选框+;自定义适配器+;listview+;共享引用

Android 复选框+;自定义适配器+;listview+;共享引用,android,Android,我有一个带有两行(textview)和一个复选框的自定义适配器的listview。 我想在关闭应用程序时保存复选框的状态,但我不知道如何保存,我尝试了很多方法,但什么都没有 我可以用android.R.layout.simple\u list\u item\u多选来做,但我的适配器不行 一次创建 private SimpleAdapter notes; ArrayList<HashMap<String, String>> arraylist_hashmap = new

我有一个带有两行(textview)和一个复选框的自定义适配器的listview。 我想在关闭应用程序时保存复选框的状态,但我不知道如何保存,我尝试了很多方法,但什么都没有

我可以用android.R.layout.simple\u list\u item\u多选来做,但我的适配器不行

  • 一次创建

    private SimpleAdapter notes;
    ArrayList<HashMap<String, String>> arraylist_hashmap = new ArrayList<HashMap<String, String>>();
    
    if (lenguage.equals("Deutsch")) {
                HashMap<String, String> item;
                for (int i = 0; i < StatesAndCapitalsAleman.length; i++) {
                    item = new HashMap<String, String>();
                    item.put("line1", StatesAndCapitalsAleman[i][0]);
                    item.put("line2", StatesAndCapitalsAleman[i][1]);
                    arraylist_hashmap.add(item);
                }
    
    notes = new SimpleAdapter(this, arraylist_hashmap, R.layout.main_item_two_line_row,
                new String[] { "line1", "line2" }, 
                new int[] { R.id.text1, R.id.text2 });
    
        getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        setListAdapter(notes);
    
    私有SimpleAdapter注释;
    ArrayList ArrayList_hashmap=新的ArrayList();
    如果(长度等于(“德国”)){
    HashMap项;
    for(int i=0;i
  • 拯救国家

     @Override
        public void onBackPressed() {
            // TODO Auto-generated method stub
            SaveSelections();
            super.onBackPressed();
        }
    
     private void SaveSelections() {
        // save the selections in the shared preference in private mode for the
        // user
        SharedPreferences.Editor prefEditor = sharedpreferences.edit();
        String savedItems = getSavedItems();
        prefEditor.putString(MyPREFERENCES.toString(), savedItems);
        prefEditor.commit();
    }
    
    private String getSavedItems() {
            String savedItems = "";
            int count = this.listView_ale.getAdapter().getCount();
            for (int i = 0; i < count; i++) {
                if (this.listView_ale.isItemChecked(i)) {
                    if (savedItems.length() > 0) {
                        savedItems += "," + this.listView_ale.getItemAtPosition(i);
                    } else {
                        savedItems += this.listView_ale.getItemAtPosition(i);
                    }
                }
            }
            return savedItems;
        }
    
    @覆盖
    public void onBackPressed(){
    //TODO自动生成的方法存根
    SaveSelections();
    super.onBackPressed();
    }
    私有void SaveSelections(){
    //以专用模式将选择保存在共享首选项中,以用于
    //使用者
    SharedReferences.Editor prefEditor=SharedReferences.edit();
    字符串savedItems=getSavedItems();
    putString(MyPREFERENCES.toString(),savedItems);
    提交();
    }
    私有字符串getSavedItems(){
    字符串savedItems=“”;
    int count=this.listView_ale.getAdapter().getCount();
    for(int i=0;i0){
    savedItems+=“,”+this.listView_ale.getItemAtPosition(i);
    }否则{
    savedItems+=this.listView_ale.getItemAtPosition(i);
    }
    }
    }
    返回savedItems;
    }
    

您需要使用自己的型号创建自定义适配器。 根据您的要求创建具有选定布尔字段和其他字段的模型。然后为列表创建自定义适配器。然后,您可以将复选框检查状态上的模型对象修改为选定的true/false,然后您可以根据您的要求保存状态