最有效的方法来设置基于文本文件的Checkbox

时间:2017-11-26 03:17:59

标签: android performance

目前,我正在使用Android应用,该应用会将偏好设置存储在列表中。当用户在第一次使用后回来时,他们可以选择加载他们之前的选择。但是,当我执行此操作时,循环运行时会有几秒钟的延迟。有没有更好的方法来解决这个问题?

    if(stored)
     {
         CheckBox checkBox;
         ViewGroup viewGroup1 = (ViewGroup) findViewById(R.id.rightLayout);
         ViewGroup viewGroup2 = (ViewGroup) findViewById(R.id.leftLayout);
         String[] preferences = fileReadIn().split(",");
         String checkBoxText;
         String preferenceText;
         for(int i = 0; i < preferences.length; i++)
         {
             preferenceText = preferences[i].toLowerCase();
             for(int c = 0; c < viewGroup1.getChildCount(); c++)
             {
                 checkBox = (CheckBox) viewGroup1.getChildAt(c);
                 checkBoxText = checkBox.getText().toString().toLowerCase();
                 if(preferenceText.equals(checkBoxText))
                 {
                     checkBox.setChecked(true);
                 }
             }
             for(int c = 0; c < viewGroup2.getChildCount(); c++)
             {
                 checkBox = (CheckBox) viewGroup2.getChildAt(c);
                 checkBoxText = checkBox.getText().toString().toLowerCase();
                 if(preferenceText.equals(checkBoxText))
                 {
                     checkBox.setChecked(true);
                 }
             }
         }
     }

1 个答案:

答案 0 :(得分:0)

无需将首选项存储在文件中。 Android已经提供了一种更简单,更快捷的存储方式。追回他们。请参阅SharedPreferences文档

这是一个小例子,如果你想存储值:

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("preferences", myString);
editor.apply();

当你想要检索时,只需使用,

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String myString= prefs.getString("preferences", null);
if (myString != null) {
   //do whatever you want with it
}