我有自定义适配器和名为ArrayList<String>
的{{1}},其中包含任何用户放置的内容。
这是我的方法,只要用户在那里放置或删除,就保存listView:
groceries
在这里我设置文字删除线并更改颜色onClick for 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();
}
其中 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();
}
}
});
是我的TextView for listView。问题是,list_content
方法不会保存颜色。
如何使用sharedPreferences保存颜色和删除线文本?
答案 0 :(得分:1)
我看不到你在Set中添加颜色值的位置,我认为这就是问题
答案 1 :(得分:1)
到目前为止,最好的解决方案是使用更好的数据存储模型。例如,您可以使用SQLite数据库,其中包含各种属性的列(名称,已选中)。或者,您可以将数据存储在JSON文件,XML文件,CSV文件或其他形式的简单文件中。
如果出于某种原因,您确定要使用SharedPreferences
,则可以:
GroceryItem
类ArrayList<GroceryItem>
,即您的数据模型的内存中表示ArrayList<GroceryItem>
转换为String
表示形式String
保存在SharedPreferences