如何获取所有共享首选项包含相同的名称

时间:2016-03-18 09:26:22

标签: android sharedpreferences spinner

我想把所有具有相同名称的共享偏好放在一起(在微调器中)。

现在我只能获得所有共享偏好我不知道如何获得相同的命名共享偏好,如alarm1,alarm2,alarm3,alarm4,alarm5。

final File prefsdir = new File(getApplicationInfo().dataDir,"shared_prefs");
String[] list = prefsdir.list();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, android.R.id.text1,list);
Spinner sp = (Spinner) findViewById(R.id.tum_ilaclar);
p.setAdapter(adapter);

enter image description here

3 个答案:

答案 0 :(得分:1)

我不清楚,但是使用for循环

  SharedPreferences.Editor editor = sharedpreferences.edit();            
    for(int i=1;i<list.length;i++){
        editor.putString("alarm"+i,value);
   }

答案 1 :(得分:1)

我明白你想要什么。您可以像这样过滤prefsdir.list()列表并创建适配器。

ArrayList<String> filtered_list = new ArrayList<String>()
for(String item : prefsdir.list()){
   if(item.startWith("alarm")){
      filtered_list.add(item)
   }
}

但这不是保持数据的好方法。至于我,你可以使用数据库。您可以轻松实现ormactiveandroid库。

答案 2 :(得分:1)

列出带过滤器的文件

final File prefsdir = new File(getApplicationInfo().dataDir,"shared_prefs");
String[] list = prefsdir.list(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String filename) {
        return filename.startsWith("alarm");
    }
});

删除文件扩展名

这是我之前写过的FileUtil课程。它使用一般方法从具有/不具有扩展名的路径获取文件名。您可以使用它来遍历已过滤的列表以获得您想要的内容。

package com.example.utils;

import java.io.File;

public final class FileUtil {
    public static String getFilename(String path) {
        if (path == null) {
            return null;
        }
        String[] segments = path.split(File.separator);
        return segments[segments.length - 1];
    }

    public static String getFilenameNoExt(String path) {
        if (path == null) {
            return null;
        }
        String filename = getFilename(path);
        int extension = filename.lastIndexOf(".");
        return (extension >= 0) ? filename.substring(0, extension) : filename;
    }

    private FileUtil(){}
}