Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SharedReferences保存颜色和删除线文本_Java_Android_Listview_Colors_Sharedpreferences - Fatal编程技术网

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获取所有数据并保存它们?