我正在尝试从SharedPreferences中的List编辑值,但某些地方出了问题。
我的SharedPreference是:
public class StepsData {
static SharedPreferences data;
static SharedPreferences.Editor editor;
static final int VALUE_KEY = 0;
static final List<String> LIST_KEY= new Vector<String>();
}
我通过以下方式使用SharedPref:
StepsData.data = getApplicationContext().getSharedPreferences("userData", MODE_PRIVATE);
StepsData.editor = StepsData.data.edit();
如果我想编辑或从VALUE_KEY中获取价值,则可以使用以下方法:
int step = StepsData.data.getInt(String.valueOf(VALUE_KEY), 0);
editor.putInt(String.valueOf(VALUE_KEY), 0).apply();
但是我在使用List时遇到问题,我获取值的代码是:
List<String> myList = (List<String>) data.getStringSet(String.valueOf(LIST_KEY),null);
和删除:
List<String> clearList = new Vector<String>();
editor.putStringSet(String.valueOf(LIST_KEY), (Set<String>) clearList).apply();
但是有一个NullPointerException。在SharedPreference的List上使用诸如“
.clear()”之类的最佳方法是什么,怎么可能从此List和size中获取值?
如果要将List对象存储在SharedPreference中,请使用gson库。它将用于将列表对象转换为json格式,并将该json字符串存储到sharedPref中。
首先将此行包含在gradle文件中(应用级别)
编译’com.google.code.gson:gson:2.4’
下面的代码是将类型设置为列表
Type listType = new TypeToken<List<String>>(){}.getType();
Gson gson = new Gson();
现在创建列表对象并使用gson对象并将其转换为json字符串格式
List<String> myList = new ArrayList<>();
//add elements in myList object
String jsonFormat = gson.toJson(myList,listType);
//adding to sharedPref
editor.put("list",jsonFormat).apply();
现在从sharedPref获取值,并将json字符串转换回List对象。
//this line will get the json string from sharedPref and will converted into object of type list(specified in listType object)
List<String> list = gson.fromJson(sharedPref.get("list",""),listType);
//now modify the list object as par your requirement and again do the same step of converting that list object into jsonFormat.
问题内容: 我正在使用的SQLite数据库表会在需要时添加列。我不想对列进行硬编码,否则会冒着更新数据库而忘记更新硬编码值的风险。如何返回表中所有列的名称?(最好在中) 问题答案: 最好是使用实例并使用查询方法 应该有列名
昨天我的Nexus5收到了从到版本的更新。此后,扫描设备中可用网络的动作停止接收列表,在这种情况下,结果列表的大小为0,即使在Wifi系统设置中列出了10+个Wifi网络。 这方面的代码通常是:注册并在接收器中等待事件,如下所示: 我在API的变化主题中搜索了关于这个的内容,但是我没有看到这个功能有什么突破性的变化。 有人注意到了吗?是API中的新内容还是仅有的个别情况?
rank ▲ ✰ vote url 45 441 233 760 url 合并列表中的列表 可能重复的问题: Flattening a shallow list in Python Comprehension for flattening a sequence of sequences? 我想是不是有更好的方法 我可以用一个循环来做,但是除了这样做还有什么更cool的用一行来做的方法?我用redu
问题内容: 蟒蛇 我有一个清单清单。喜欢 我想计算每个列表在主列表中出现了多少次。 我的输出应该像 问题答案: 只需使用来自:
我有一个android布局,它有一个,里面有很多元素。在的底部有一个,然后由适配器填充。 我遇到的问题是,android将从中排除,因为已经具有可滚动的功能。我希望与内容一样长,并且主滚动视图是可滚动的。 我怎样才能达到这种行为呢? 下面是我的主要布局: 然后以编程方式将组件添加到具有ID:的linearlayour中。下面是加载到LinearLayout中的一个视图。就是这个给我卷轴带来麻烦的。
问题内容: 我有一个 清单清单 : 我想转换为一个 集合, 即删除重复列表并从中创建一个仅包含 唯一 列表的新列表。 在上述情况下,所需答案将是 但是当我这样做时,它给了我错误 TypeError:无法散列的类型:“列表” 你能解决我的问题吗?提前致谢! 问题答案: 由于列表是可变的,因此不能进行哈希处理。最好的选择是将它们转换为元组并形成一个集合,像这样 我们一次遍历一个列表,将其转换为一个元组