使用sharedPreferences保存颜色和删除线文本

时间:2017-05-29 15:56:16

标签: java android listview colors sharedpreferences

我有自定义适配器和名为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保存颜色和删除线文本?

2 个答案:

答案 0 :(得分:1)

我看不到你在Set中添加颜色值的位置,我认为这就是问题

答案 1 :(得分:1)

到目前为止,最好的解决方案是使用更好的数据存储模型。例如,您可以使用SQLite数据库,其中包含各种属性的列(名称,已选中)。或者,您可以将数据存储在JSON文件,XML文件,CSV文件或其他形式的简单文件中。

如果出于某种原因,您确定要使用SharedPreferences,则可以:

  • 创建一个知道名称和已检查状态信息的GroceryItem
  • 保留ArrayList<GroceryItem>,即您的数据模型的内存中表示
  • 使用Gson,Jackson或其他一些JSON解析器将ArrayList<GroceryItem>转换为String表示形式
  • String保存在SharedPreferences