我在xamarin.forms中有一个简单的移动应用程序。我有一个按钮,当点击时触发一个通过相机扫描代码的方法。扫描完成后,就会得到数字。但是,我想扫描几个代码并存储相应的数字。因此,每次扫描后,我会再次单击该按钮进行扫描。
我在C#中的代码如下:
TextView
问题是该列表中包含一个数字。经过另一次扫描, 它删除以前的号码并存储新号码。
我的问题是如何才能存储以前的数字呢?
答案 0 :(得分:3)
在我看来,您需要在此功能之外创建列表,并在另一个功能中添加/删除表单。
ListNumbers = new ObservableCollection<string>();
public async void StoreNum()
{
var num = await ScanCodeVM.CodePage(); // returns a string
if (num != null)
{
ListNumbers.Add(num);
}
}
// do something with that list.
答案 1 :(得分:0)
HashSet<string>
public class NumberReader
{
public HashSet<string> Numbers { get; set; }
// Numbers instantiated in constructor
public NumberReader()
{
Numbers = new HashSet<string>();
}
// Executed when user click a button
public async Task Read()
{
var number = await ScanCodeVm.CodePage();
if (number != null)
{
Numbers.Add(number);
}
}
}
HashSet<T>.Add
方法只会添加唯一值。成功添加给定值时返回true
,当集合中已存在给定值时返回false
。
不要将async void
用于函数 - 因为所有可能的异常都将被“吞噬”。但是可以将async void
用于事件处理程序。