EP 13: Add/Edit the MockData in TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~

本篇是 Re: 从零开始用 Xamarin 技术来复刻过去开发的一个 App: TopStore 系列文的 EP13。

在前一篇 EP12 当中,我们已经将当无论是以何种方式转跳进入 PersonDetailPage 时所需要的 UI 变化处理完成了,但在最後也提到要在 PersonDetailPage 新增联络人资料的部分看似好像已经没问题;但是检视某笔联络人资料,然後再进行变更时会发生资料面上的处理问题。

最主要是先前在 EP10 当中 Models 里的 Person 类别当中设计了 Id 属性,并且在 MockData 的 People 资料产生的时候也赋予了 Id 值。

才有办法继续完成在 EP11、EP12 当中所介绍的效果。

但由於这个 Id 值的产生,是透过我们所设计前 MockData 处理而来的,思考的问题点就会是要注意在,当我们未来加入 SQLite 去处理资料的使用时,应该会是如何运用 SQLite 的设计。

那 MockData 就要尽可能的有类似运作设计,以便利我们当要转换到 SQLite 的时候。

好罗,废话不多说 EP13 就此开始罗~~~


首先,来打开 Utilities 资料夹底下的 MockData 这个类别,并且在此当中增加三个方法(这里有预先 using 引用了 System.Linq 的命名空间)。

MockData 针对 People 资料的修正处理

所以当 MockData 当中设计了 GetPerson、NewPerson、EditPerson 这三个方法之後,我们来打开 PersonDetailPageViewModel 来作一些程序的编修。

透过呼叫 MockData 的 GetPerson 方法,取代先前转写的 Linq 找寻; 用呼叫 NewPerson 方法,取代之前直接 new Person();
PersonDetailPageViewModel 使用 GetPerson 与 NewPerson

透过呼叫 MockData 的 EditPerson 方法取代先前直接 People.Add(EditPerson
),并且加入对於 UI 互动上更有帮助的程序设计。
PersonDetailPageViewModel 使用 EditPerson 并修改 Alert 的显示效果

所以 PersonDetailPage 对於 "新增" 联络人的部分,我们就透过下面的操作画面,确认一下结果吧!

首先是 "新增" 联络人。
Android:
PersonDetailPage 新增联络人资料

iOS:
PersonDetailPage 新增联络人资料

到目前为止,虽然我们已经能针对 MockData 当中的 People 进行资料的 "检视"、"新增"、"修改",但对於 "修改" 的资料显示上好像还怪怪的...

因为我们对於 Person 类别的设计并没有实作成 NotifyPropety,所以再次打开 Models 资料夹底下的 Person 类别,并且针对需要有 UI 与资料变更的属性来完成 NotifyPropety 相关的实作。

Person 类别设计 NotifyPropety

再来是 "修改" 联络人。

Android:
PersonDetailPage 修改联络人资料-Android

iOS:
PersonDetailPage 修改联络人资料-iOS

可能会有朋友疑问在 MockData 设计的 EditPerson 方法当中只有呼叫 People.Add(person) 的部分,为何在 "修改" 功能上就会成功。

别忘了,我们的 EditPerson 会在 GetPerson 的时候把找到的物件取出,交给 PersonDetailPageViewModel 的 EditPerson 属性的指派。

所以後续在变更的时候都是利用原本的物件参考直接变更 在 MockData 的 People 集合中的物件资讯。

好的,本 EP13 的介绍就到这边,我们已经能针对 MockData 当中的 People 进行资料的 "检视"、"新增"、"修改",并且在联络人与联络人详细资讯的画面上呈现正常,再下一篇 EP14 中,就要再来继续介绍 "删除" 的功能罗~~~

祝观赏本篇的各位:
中秋佳节月圆人团圆,处处赏月地地佳情。

鼓的掰!^_<


<<:  渗透测试基础篇

>>:  [Day 7] Reactive Programming - Reactor(FLUX & MONO) Part 1

中台组织架构

在传统的烟囱架构下,组织分工会以业务来划分应用系统与维运团队,由应用系统的角度出发思考。 然而业务流...

Day-25 尚未开始便已衰败、策略错误的 XBOX ONE

为了与 SONY 的 PS4 相抗衡、基於过去的策略、微软也选择在几乎相同的时间发布了他们的新主机 ...

[Java Day04] 1.2. 型别

教材网址 https://coding104.blogspot.com/2021/06/java-t...

拓朴排序问题

6 拓朴排序问题 现在让我们来考虑另一个可以使用 DFS 来解决的经典范例:拓朴排序问题。想像有 N...