【问题标题】:Getting shared preferences and displaying them in a listview获取共享首选项并在列表视图中显示它们
【发布时间】:2015-10-07 14:16:43
【问题描述】:

所以我在主要活动中有一些共同的偏好:

SharedPreferences prefs = this.getSharedPreferences("myFavs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();

我添加了一些生成的字符串作为键值对:

editor.putString(saved,saved);
editor.apply();

在另一个活动中,我希望能够将我保存在共享首选项文件中的所有键值对显示到 ListView 中。

我使用过类似的东西:

 ListView listView = (ListView) findViewById(R.id.favsList);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.listlayout, android.R.id.text1, values );
    listView.setAdapter(adapter);

之前,但是我不确定如何将我所有的共享首选项转换为可以放入 ListView 的格式。

PS 我应该提到我只需要一个键或值的列表,因为键和值总是相同的。

我认为这可能解决了我的问题:

SharedPreferences prefs = getSharedPreferences("myFavs", 0);
    Map<String, String> m = (Map<String, String>) prefs.getAll();
    List<String> list = new ArrayList<>(m.values());

这对吗?

【问题讨论】:

  • 你试过SharedPreferences.getAll()
  • 你需要逐行查看日志。它会帮助你

标签: java android listview sharedpreferences


【解决方案1】:

如果我理解正确,您需要的是检索所有偏好值。

为此,您可以使用它;

 Map<String,?> allPrefs = prefs.getAll();      
    for(Map.Entry<String,?> entry : allPrefs.entrySet()){
      String key = entry.getKey();
      String value = entry.getValue().toString();
     }

您可以将值存储到数组中并使用。

更新

更准确

    public String[] fetchAllPreference(){
     String[] values = new String();
     int index = 0;
     Map<String,?> allPrefs = prefs.getAll();      

     for(Map.Entry<String,?> entry : allPrefs.entrySet()){
       value[index++] = entry.getValue().toString();
     }
     return values; 
    }

你可以使用这个函数来获取你可以提供给你的 Listview 适配器的所有首选项和返回的字符串数组

【讨论】:

  • 我开始使用SharedPreferences prefs = getSharedPreferences("myFavs", 0);Map&lt;String, String&gt; m = (Map&lt;String, String&gt;) prefs.getAll();List&lt;String&gt; list = new ArrayList&lt;&gt;(m.values());,我觉得和你说的差不多?
  • 我没看懂,你能解释一下吗?
  • 感谢您的帮助:)
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2013-06-28
  • 2012-12-14
相关资源
最近更新 更多