2017-05-29 86 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