listview - Xamarin 表单:不同的项目正在调用而不是 flowlistview 中的选定项目?
问题描述
最近我发布了一个与项目可见性有关的问题flowlistview
,这个问题也与此有关。
我在列表中有 8 张图片,最初显示的是问号图片。当点击问号图像时,真实图像将在问号图像下方可见。使用最近的线程实现了此功能。
这是一个为孩子们准备的游戏。游戏规则:玩家首先点击一个图像,然后玩家可以看到真实图像。然后玩家点击另一个图像,然后玩家现在也可以看到该真实图像。如果图像匹配,玩家将获得积分,并且两个选定的项目都将从 UI 中删除。如果不匹配再次隐藏带有问号图像的真实图像。
上面的事情我都做了,但是问题是有时候图片的选择是错误的。如果我选择第四张图像,则第二张或第六张下的图像将显示在 UI 中。不知道这背后的原因是什么。我在这里上传了一个示例项目。
解决方案
原因:您通过确定它们的imageUrl是否相等来匹配图片。但是 imageUrl 在 List 中并不是唯一的。
解决方案:您可以在模型中添加一个属性Id。
public int Id { get; set; }
并通过确定项目的 Id 是否相等来处理逻辑。
ImageItems.Add(new NameMatchList() { Id = 1,imageUrl = "/cbrain-app/files/doc-lib/2018/02/22/11/46/06/971/head/Comfort the Sorrowing.png" });
ImageItems.Add(new NameMatchList() { Id = 2, imageUrl = "/cbrain-app/files/doc-lib/2018/02/22/11/46/23/784/head/Giving Food To The Hungry.png" });
//...
if (items.Id == selecteditem.Id)
{
if (!firstImageFlipped)
{
items.ImageVisibility = true;
items.TopImageVisibility = false;
firstImageFlipped = true;
Application.Current.Properties["FirstImageUrl"] = selecteditem.imageUrl;
Application.Current.Properties["FirstImageItem"] = selecteditem;
}
}
推荐阅读
- javascript - 带有 NodeJS 的 Babel 无法使用扩展运算符
- javascript - 我应该如何在javascript的下拉列表中自动获取先前选择的选项
- node.js - app.use(validator()) TypeError: 验证器不是函数
- atom-editor - 如何将 Atom 编辑器与远程服务器连接?
- r - 在排列好的地块之间画一个“网格”
- sass - `@apply` 不能与 `.text-md` 一起使用
- numberformatexception - 自定义 OpenCsv CsvToBeanBuilder
- java - 使用休眠当前会话执行存储过程后无法执行任何读/写操作
- javascript - 如何设置 jest 以测试画布
- maven - Maven surefire 插件套件XmlFile 并行执行