我如何记住(使用共享首选项)静态数组中的项目?

时间:2014-04-11 16:43:06

标签: android android-layout android-fragments android-preferences android-checkbox

我的代码中有一个静态数组,我正在尝试记住对它们的检查(一次只检查1个)。说我有项目1,2,3和4和3被选中(1 2 4将被取消选中)如果我点击完成按钮并返回到视图稍后我想看到从上次检查3。有没有办法可以做到这一点? 这是我的代码:

public static final  String[] groups = new String[] { "A", "B", "C", "D" };

    public static final  String[][] children = new String[][]  {
            { "1" } ,
            { "2" },
            { "3"},
            { "4" }
    };  

        View view = inflater.inflate(R.layout.fragment_dead, container, false);

        categoriesList1 =  (ExpandableListView)view.findViewById(R.id.categories);      

        String currTemplate = MainFragment.Default;
        for(@SuppressWarnings("rawtypes") Map.Entry entry: map.entrySet()){
            if(mTemplateId.equals(entry.getValue())){
                currTemplate = (String) entry.getKey();
                break; 
            }
        }

        mAdapter = new MenuExpandableListAdapter(Fragment.groups, 
  MainFragment.children, currTemplate,  this.getActivity());
        mAdapter.setSelectionListner(this);
        categoriesList1.setGroupIndicator(null);
        categoriesList1.setChildIndicator(null);
        categoriesList1.setAdapter(mAdapter);
        categoriesList1.setOnChildClickListener(mAdapter);  
        return view;
    @Override
    public void onClick(final View view) {
        MainActivity activity = (MainActivity) getActivity();
        switch (view.getId()) {

            case R.id.button_done:
                saveUserPreferences();
                activity.hideSoftKeyboard(getView());
                break;

            default:
                break;
        }

2 个答案:

答案 0 :(得分:2)

您应该阅读本文以了解有关数据存储基础知识的更多信息,它实际上非常简单:

http://developer.android.com/guide/topics/data/data-storage.html#pref

  

您可以使用SharedPreferences保存任何原始数据:布尔值,浮点数,整数,长整数和字符串。这些数据将在用户会话中持续存在(即使您的应用程序被终止)。

答案 1 :(得分:0)

你应该生成另一个只包含已检查选项的数组,然后保存它(通过共享数据或单例类)。 与显示此活动时相比,您选中了此值。所以当然如果第一次打开这个活动,你的checked items数组将为null,所以所有的值都将被取消选中。

通过java检查,你可以试试这个:

// also check this lines in the above example
ViewHolder holder = (ViewHolder) view.getTag();
 holder.checkbox.setChecked(list.get(position).isSelected());