2017-05-29 25 views
0

我有自定义适配器和一个名为groceriesArrayList<String>,其中包含用户放置的所有内容。使用sharedPreferences保存颜色和删除线文本

这是我的方法节省每当用户将一些存在或删除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(); 
} 

在这里,我将文字删除,并改变颜色的onClick为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(); 

      } 

     } 
    }); 

其中list_content是我的TextView的ListView。问题是,saveGroceriesList();方法不会保存颜色。 如何使用sharedPreferences保存颜色和删除线文本?

回答

2

我看不到你在哪里添加颜色值进入设置,我认为这是问题

+0

如果我有单独的TextView,我将如何添加它们以设置? – Zeo

+0

你想从listview中获取allData并保存它们吗? –

1

最好的解决办法,到目前为止恕我直言,是用一个更好的数据存储模型。例如,您可以使用SQLite数据库,并使用各种属性的列(名称,选中)。或者,您可以将数据存储在JSON文件,XML文件或CSV文件或其他形式的简单文件中。

如果出于某种原因,你一定要使用SharedPreferences,你可以:

  • 创建GroceryItem类,它知道的名字,并检查状态信息
  • 举行的ArrayList<GroceryItem>那是你的内存数据模型的表示
  • 使用GSON,杰克逊,或其他一些JSON解析器的ArrayList<GroceryItem>转换和从String表示
  • String保存在SharedPreferences
+0

我还没有使用SQLite数据库,但我会把你的答案考虑在内,并尝试一下。谢谢! – Zeo