Как сохранить массив с плавающей точкой в ​​общих настройках? - PullRequest
2 голосов
/ 25 января 2020

У меня есть массив с плавающей точкой. Мне нужно сохранить этот массив в sharedpreferences

float[] arrayx = new float[1000];

и снова получить этот массив при следующем входе в приложение,

как я могу это сделать?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 25 января 2020

Самым простым способом может быть преобразование float[] в строку, разделенную запятыми, и сохранение в общий преф, при извлечении его можно split(",") анализировать с плавающей точкой следующим образом.

    SharedPreferences pref;
    // Editor for Shared preferences
    Editor editor;

    // Context
    Context _context;
   public void saveFloatArray(float[] arr){
        String str = " ";
        for(int i=0;i<arr.length;i++){
            str = str + ", "+ String.valueOf(arr[i]);
        }
        editor.putString("FLOAT_ARR",str);
        editor.commit();
    }

    public float[] getFloatArray(){
        String str = pref.getString("FLOAT_ARR", null);
        if(str!=null){
            String str1[] = str.split(",");
            float arr[] = new float[str1.length-1];
            // at i=0 it is space so start from 1
            for(int i=1;i<str1.length;i++){
                arr[i-1]=Float.parseFloat(str1[i]);
            }
            return arr;
        }
        return null;
    }



Полный рабочий проект вы можете проверить this-хранилище

0 голосов
/ 25 января 2020

Взгляните на это

С его помощью вы можете получить доступ к каждому элементу, используя индекс очень быстро

SharedPreferences sharedPreferences=context.getSharedPreferences("name", 0);;

    public void setFloatArrays(float[] arrays) {
        final SharedPreferences.Editor editor = this.sharedPreferences.edit();
        for (int i = 0; i < arrays.length; i++) {
            editor.putFloat("float" + i, arrays[i]);
        }
        editor.apply();
    }

    public float[] getFloatArrays() {
        float[] arrays = new float[1000];
        for (int i = 0; i < arrays.length; i++) {
            arrays[i] = this.sharedPreferences.getFloat("float" + i, 0f);
        }
        return arrays;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...