listview - Xamarin listView 选择了错误的项目
问题描述
我从 xamarin 开始。我展示了一个包含所有可用语言的列表视图。用户单击一个并可以保存它。这是我的代码 XAML :
<ListView x:Name="LanguageList"
SelectionMode="Single"
ItemSelected="OnSelected">
</ListView>
CS :
private async void SetListLanguage(bool init)
{
itemList = new ObservableCollection<string>();
l = await TextToSpeech.GetLocalesAsync();
foreach (var locale in l)
{
if (filter.Length == 0)
itemList.Add(locale.Name);
else if (locale.Name.Contains(filter))
itemList.Add(locale.Name);
if (init && locale.Name == "English")
{
Console.WriteLine("Initiating with English");
local = locale;
}
}
LanguageList.ItemsSource = itemList;
}
void OnSelected(object sender, SelectedItemChangedEventArgs e)
{
selectedName = e.SelectedItem as string;
Console.WriteLine("Selected " + selectedName);
foreach (var locale in l)
{
if (selectedName != "" && locale.Name == selectedName)
{
Console.WriteLine("Registered locale for " + selectedName);
local = locale;
}
}
}
当我点击任何语言时,例如中文,它会给我这个奇怪的输出。
Selected Chinese (Taiwan)
Registered locale for Chinese (Taiwan)
02-25 16:01:09.938 I/mono-stdout(15514): Selected Chinese (Taiwan)
02-25 16:01:09.938 I/mono-stdout(15514): Registered locale for Chinese (Taiwan)
Selected
02-25 16:01:09.943 I/mono-stdout(15514): Selected
Selected Korean (South Korea)
Registered locale for Korean (South Korea)02-25 16:01:09.949 I/mono-stdout(15514): Selected Korean (South Korea)
02-25 16:01:09.949 I/mono-stdout(15514): Registered locale for Korean (South Korea)
我尝试删除韩语,它给了我与法语相同的东西。所以这与它是列表中的第一个这一事实有关,但我不明白为什么。
解决方案
Console.Writeline
造成这种情况。你可以Debug.Writeline
改用。
private void OnSelected(object sender, SelectedItemChangedEventArgs e)
{
var selectedName = e.SelectedItem as string;
//Console.WriteLine("Selected " + selectedName);
Debug.WriteLine("Selected " + selectedName);
foreach (var locale in l)
{
if (selectedName != "" && locale.Name == selectedName)
{
//Console.WriteLine("Registered locale for " + selectedName);
Debug.WriteLine("Registered locale for " + selectedName);
//local = locale;
}
}
}
将 Console.WriteLine 留在它所属的控制台应用程序中,并在其他任何地方使用 Debug.WriteLine。引自博客。https://www.kolls.net/blog/?p=120
推荐阅读
- python - LightGBM:模型拟合期间的验证 AUC 分数与相同测试集的手动测试 AUC 分数不同
- c# - C# 方法 CheckSignature 为有效的 XAdES 签名文档返回 false
- node.js - Heroku 部署有问题
- swift - 一个常量序列可以使用for-in循环进行迭代,但不能直接调用next()?
- ruby - 如何防止ruby 2.7中的警告
- python - 如何从连接到 S3 存储桶的 SNS 中获取文件密钥
- c - SO_TIMESTAMP 套接字选项使用哪个时钟?
- ansible - 用于重启 Docker Swarm 服务的 Ansible 处理程序
- react-native - Flatlist 覆盖以前的数据
- reactjs - 部署到 GitHub 的 React 应用程序给了我一个缩小的错误 #152