Java 使用SharedReferences保存颜色和删除线文本
我有一个自定义适配器和一个名为Java 使用SharedReferences保存颜色和删除线文本,java,android,listview,colors,sharedpreferences,Java,Android,Listview,Colors,Sharedpreferences,我有一个自定义适配器和一个名为groceries的ArrayList,包含用户放在那里的任何东西 这是我在用户放置或删除某些内容时保存listView的方法: public void saveGroceriesList() { sharedPreferences = getContext().getSharedPreferences("com.me.application", Context.MODE_PRIVATE); HashSet<String> set = n
groceries
的ArrayList
,包含用户放在那里的任何东西
这是我在用户放置或删除某些内容时保存listView的方法:
public void saveGroceriesList() {
sharedPreferences = getContext().getSharedPreferences("com.me.application", Context.MODE_PRIVATE);
HashSet<String> set = new HashSet(groceries);
sharedPreferences.edit().putStringSet("Groceries", set).apply();
}
public void saveGroceriesList(){
SharedReferences=getContext().GetSharedReferences(“com.me.application”,Context.MODE\u PRIVATE);
HashSet=新的HashSet(杂货);
sharedReferences.edit().putStringSet(“Groceries”,set).apply();
}
在这里,我为listView设置文本删除线并更改颜色:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
list_content = (TextView) view.findViewById(R.id.list_content);
if (!isChecked){
isChecked = true;
list_content.setPaintFlags(list_content.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
list_content.setTextColor(Color.parseColor("#a7a7a7"));
saveGroceriesList();
} else {
isChecked = false;
list_content.setPaintFlags(list_content.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
list_content.setTextColor(Color.parseColor("#000000"));
saveGroceriesList();
}
}
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
list\u content=(TextView)view.findViewById(R.id.list\u content);
如果(!已检查){
isChecked=true;
list_content.setPaintFlags(list_content.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);
list_content.setTextColor(Color.parseColor(#a7a7”);
saveGroceriesList();
}否则{
isChecked=false;
list_content.setPaintFlags(list_content.getPaintFlags()&(~Paint.STRIKE_THRU_TEXT_FLAG));
list_content.setTextColor(Color.parseColor(“#000000”);
saveGroceriesList();
}
}
});
其中list\u content
是我的listView文本视图。问题是,saveGroceriesList()代码>方法无法保存颜色。
如何使用共享的引用保存颜色和删除线文本?我看不出您在哪里向集合中添加颜色值,我认为这是问题所在我看不到您在哪里向集合中添加颜色值,我认为这是问题所在到目前为止,最好的解决方案是使用更好的数据存储模型。例如,您可以使用一个SQLite数据库,其中包含用于各种属性(名称,选中)的列。或者,您可以将数据存储在JSON文件、XML文件、CSV文件或其他形式的简单文件中
如果出于任何原因,您确定要使用SharedReferences
,您可以:
- 创建一个
GroceryItem
类,该类知道名称和选中状态信息
- 保存一个
ArrayList
,它是数据模型的内存表示形式
- 使用Gson、Jackson或其他一些JSON解析器将
ArrayList
转换为String
表示
- 将
字符串保存在SharedReferences
到目前为止,最好的解决方案是使用更好的数据存储模型。例如,您可以使用一个SQLite数据库,其中包含用于各种属性(名称,选中)的列。或者,您可以将数据存储在JSON文件、XML文件、CSV文件或其他形式的简单文件中
如果出于任何原因,您确定要使用SharedReferences
,您可以:
- 创建一个
GroceryItem
类,该类知道名称和选中状态信息
- 保存一个
ArrayList
,它是数据模型的内存表示形式
- 使用Gson、Jackson或其他一些JSON解析器将
ArrayList
转换为String
表示
- 将
字符串保存在SharedReferences
我还没有使用过SQLite数据库,但我会考虑您的答案并尝试使用它。谢谢我还没有使用过SQLite数据库,但我会考虑您的答案并尝试一下。谢谢如果我有单独的文本视图,我将如何将它们添加到集合中?是否要从listview获取所有数据并保存它们?如果我有单独的文本视图,我将如何将它们添加到集合中?是否要从listview获取所有数据并保存它们?