xamarin - 如何保存类似列表视图的数组?
问题描述
我有一个条目、一个保存按钮和一个列表视图。当用户向此列表添加条目时,如何保存首选项,以便下次我回到应用程序时,列表不会重置。我已经为这个工作创建了一个视图模型。
class EmploeeViewModel
{
public ICommand AddLinacCommand => new Command (AddLinac);
public ObservableCollection<string> Emploees { get; set; }
public string LinacName { get; set; }
public EmploeeViewModel()
{
Emploees = new ObservableCollection<string>();
Emploees.Add("Behzad.C");
Emploees.Add("Abolfazl.N");
Emploees.Add("Samira.Y");
}
public void AddLinac()
{
Emploees.Add(LinacName);
}
}
}
(所以我想要这个 void Addlinac 保存所有时间的用户条目)??????????????
解决方案
Xamarin.Essentials:首选项是处理此问题的好方法。
但是插件不支持存储数组,所以我们必须先使用Newtonsoft.Json将数组转换成json字符串。
店铺
ObservableCollection<string> Emploees = new ObservableCollection<string>();
Emploees.Add("Behzad.C");
Emploees.Add("Abolfazl.N");
Emploees.Add("Samira.Y");
string json = JsonConvert.SerializeObject(Emploees);
Preferences.Set("my_key", json);
得到
var myValue = Preferences.Get("my_key", "default_value");
var Emploees = JsonConvert.DeserializeObject(myValue);
更新
//在视图模型中的使用
class EmploeeViewModel
{
public ICommand AddLinacCommand => new Command(AddLinac);
public ObservableCollection<string> Emploees { get; set; }
public string LinacName { get; set; }
public EmploeeViewModel()
{
var myValue = Preferences.Get("my_key", "default_value");
if(myValue != "default_value")
{
Emploees = JsonConvert.DeserializeObject(myValue) as ObservableCollection<string>;
}
else
{
Emploees = new ObservableCollection<string>();
}
string json = JsonConvert.SerializeObject(Emploees);
Preferences.Set("my_key", json);
}
public void AddLinac()
{
Emploees.Add(LinacName);
string json = JsonConvert.SerializeObject(Emploees);
Preferences.Set("my_key", json);
}
}
推荐阅读
- mysql - 查询 1 错误:“字段列表”中的未知列,但已知列
- python - 如何在另一列中创建以字符串值开头和结尾的列?
- python - 在模拟类中使用 pytest 夹具
- snowflake-cloud-data-platform - 从 AWS 账户到 GCP 账户的雪花外部表复制
- drools - Drools 工作台(Drools 业务中心)停止容器错误
- vue.js - 如何将 @change 添加到自定义 Vue 组件
- javascript - 带有回调函数的基本字符串化问题
- asp.net - aspx .net 仅处理第一次回发,直到在 Visual Studio 中重新加载项目
- python - Pandas:如果特定列不包含特定文本,则删除数据框中的行
- java - 是否可以在 VSCode 中为同一版本的 Java 定义多个运行时?