安卓 fragment内显示网站_如何开发一款以太坊安卓钱包系列3 - 资产信息展示

news/2024/5/19 15:28:41/文章来源:https://blog.csdn.net/weixin_39739395/article/details/111133299

这是如何开发以太坊(安卓)钱包系列第3篇, 钱包账号资产信息展示,展示信息主要包括账号地址、eth余额及该账号所拥有的Token及余额。

预备知识 MVVM

本文会涉及和UI界面的交互,提前理解下界面和数据如何交互是非常有必要的,如果你已经很熟悉MVVM,可跳过这一小节。

最早写Android的时候,数据和界面经常耦合在一起,一个Activity文件总是特别大,每当产品界面改版就非常痛苦,吐槽下,很多产品经理都喜欢对界面改来改去。

后来Google 推荐多个架构模式: MPV、 MVVM模式来解决数据和UI耦合的问题,登链钱包代码,使用的就是MVVM模式,所以对它做一个简单介绍,下面是MVVM的视图和数据的交互图:

0217fe0bcb31e846dcc94d869e267bc7.png

View 通常对应于Activity/Fragment/自定义View
Model:则是和数据相关的模块。

View 与 Model 不直接发生联系, 而是通过ViewModel负责接收View层的事件以及获取并处理数据,ViewModel层的数据变化也会通知给View层进行相应的UI的更新,从而实现业务逻辑和Ui的隔离。

使用MVVM模式最大的优点就是解耦, 因为数据处理逻辑是独立于View, 在UI更改时,ViewModel 不用做太多改动。

我们使用了Google在I/O大会推出的一套遵循MVVM开发模式的LiveData和ViewModel组件架构。

ViewModel 和 LiveData

ViewModel 会关注UI生命周期来存储和管理数据,在Activity发生变化(锁屏开屏、旋转)时,ViewModel 会自动保留之前的数据并给新的Activity或Fragment使用,当界面被系统销毁时,ViewModel也会进行资源清理,避免内存泄漏。

ViewModel 还可以用于不同界面间数据共享。

LiveData是一个可观察的数据持有者类。观察者可以方便我们以异步的方式获取数据,同时LiveData也是有生命周期感知的。如果其生命周期处于STARTED或RESUMED状态。LiveData会将观察者视为活动状态,并通知其数据的变化。LiveData未注册的观察对象以及非活动观察者是不会收到有关更新的通知。

了解更多,可自行以关键字: Lifecycle、ViewModel、LiveData 进行搜索。

账号信息展示

展示信息主要包括账号地址、eth余额及该账号所拥有的Token及余额, 其界面效果如下:

be06c3f19ecf353765abe39a8ff906d9.png
这个界面应的是登链钱包的PropertyFragment,上图的UPT 是我自己发行的Token,所以没有显示价格

现在我们来思考一下, 怎么来展现上面的数据, 别着急往下看, 可以先想想。

先对问题做一个拆分,把数据拆分为4个部分:

  1. 显示当前选中的账号
  2. 显示当前账号 ETH 余额
  3. 显示当前账号下 Token 数量
  4. 显示对应的法币金额。

为了避免 UI 与上面4个数据的耦合,代码使用了一个TokensViewModel, 获取到的数据用 LiveData做了一个Wrap,以便UI可以订阅数据,TokensViewModel类像下面,代码有删减:

1
2
3
4
5
6
7

MutableLiveData 是前面提到的 LiveData的子类,在UI界面中就可以对数据进行订阅,下面我们逐一拆解下每个数据。

显示当前账号

可以分为两个步骤:

  1. 从数据库中读取账号;
  2. 界面显示账号

TokensViewModel中定义了一个MutableLiveData<ETHWallet> defaultWallet ,从数据库中读取账号会保存在defaultWallet中,然后UI对 defaultWallet 进行观察显示。

注解: 登链钱包 里大量使用的这个方式,通过一个LiveData 做数据桥接。

在上一篇导入账号及账号管理,所有的账号使用greenDao 存储起来, 因此我们只需要把所有账号从加载出来,挑选出当前选中的那一个。 结合代码看一看:

1
2
3
4
5
6
7
8
9
10
11

上面代码先用 ETHWalletDao.loadAll 加载出所有的账号,返回当前选中的,上面的代码会被FetchWalletInteract 类的 findDefault方法调用,在ViewModle里,很多时候以数据进行交互的类,我们会命名为 xxxInteract,这也是一个习惯用法。

其代码如下:

1
2
3
4
5
6
7
8
9
10
11
12

findDefault()返回一个可订阅的Single 对象,如果不熟悉可参考后面的文档。

之后,在UI界面PropertyFragment.java 中, 就可以对 defaultWallet 进行订阅:

1

当获取到默认账号时,就会回调showWallet:

1
2
3
4
5
6

这样, 界面的显示就完成了,下一篇继续介绍获取余额。

参考文档

  1. lifecycle官方文档地址
  2. RxAndroid 了解更多响应式编程

我创建了一个专门讨论钱包开发的微信群,加微信:xlbxiong 备注:钱包。

加入知识星球,和一群优秀的区块链从业者一起学习。
深入浅出区块链 - 系统学习区块链,学区块链的都在这里,打造最好的区块链技术博客。

本文原文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_804670.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常州网站服务器_常州分类信息门户网站定制 常州网站优化效果 常州百度下拉词推广 常州网站建设流程 常州网站建设公司 常州网站定制网站开发价格...

龙腾网络网站制作|网络推广一物一码系统|微信商城制作电话&#xff1a;13292208571(微信)手机上的许多用户都会注意到像素的使用&#xff0c;在分辨率下面往往使整个网页很压制&#xff0c;有种不透气的感觉&#xff0c;其实这个宽度是指在电脑上的宽度&#xff0c;不代表视觉&…

.Net 支付宝电脑网站支付

一、沙箱环境 沙箱环境是一个能让开发者快速开发以及联调的辅助环境&#xff0c;开发者只需要登录支付宝开放平台>进入开发服务>设置秘钥&#xff0c;获取APPID、支付宝网关、支付宝公钥、应用私钥就可以进行业务平台支付功能的开发&#xff0c;无需等待正式环境支付应用…

.Net微信电脑网站支付(api v2)

商户或企业前往微信开放平台申请开通微信支付&#xff0c;需要注意的是微信支付功能不对个人用户开放。开通支付功能后&#xff0c;会获取到以下微信支付相关的配置信息&#xff1a; appid&#xff1a;是微信公众账号或开放平台APP的唯一标识&#xff0c;在公众平台申请公众账…

如何让你的网站排名靠前

网站做好了&#xff0c;怎样才能让你的网站在各大搜索引擎中排名靠前呢&#xff1f;网上的帖子很多&#xff0c;通过搜索和总结&#xff0c;整理出了一套自己行之有效的方法&#xff0c;写出来供大家参考 成功案例推荐&#xff1a;http://sooboo.com.cn/ 还在继续整理中&#…

谈谈网站静态化 【转载】

本文转载自&#xff1a; http://blog.csdn.net/yizhu2000/archive/2008/09/01/2863324.aspx 我个人觉得是很好的一个总结 写在前头 静态化是解决减轻网站压力,提高网站访问速度的常用方案,但在强调交互的We2.0 时代,对静态化提出了更高的要求,静态不仅要能静,还要能动,下面我通…

IIS网站服务器性能优化指南

Windows Server自带的互联网信息服务器&#xff08;Internet Information Server&#xff0c;IIS&#xff09;是架设网站服务器的常用工具&#xff0c;它是一个既简单而又麻烦的东西&#xff0c;新手都可以使用IIS架设一个像模像样的Web站点来&#xff0c;但配置、优化IIS的性能…

简单网站新闻发布系统

写这篇文章的时候首先要向bben_h 和jdxx表示感谢&#xff0c;是bben_h提出了C#中字符替换这个问题&#xff0c;jdxx很好的解决了这个问题&#xff0c;同时也使我想起以前做的一些程序&#xff08;简单网站新闻发布系统&#xff09;&#xff0c;现在就把它奉献给大家&#xff0c…

使用SharePoint Workspace 2010同步SharePoint网站

你用什么保存你的文档&#xff1f;U盘、网盘&#xff0c;还是FTP、邮箱&#xff08;网络存储&#xff09;&#xff1f;想没有想过&#xff0c;将你的文档“随手”保存在你的网站并且与你的计算机&#xff08;即使你有多台计算机&#xff09;随时同步&#xff1f;如果你像我一样…

【web标准设计】学习、提高、欣赏网站推荐

警告文章包含的一些粗俗、庸俗、恶心的言语可能造成您阅读后的不适感&#xff0c;请谨慎选择是否阅读。如你自愿阅读本文&#xff0c;因粗俗、庸俗、恶心的言语给您所造成的任何后果&#xff0c;本文作者不负任何责任。 华丽的中指基础知识的学习 XHTML、CSS、JavaScript的基础…

最新70佳单页网站设计案例欣赏(中篇)

单页网站是指只有一个页面的网站&#xff0c;这种形式的网站曾经非常流行&#xff0c;现在依然有很多人喜欢。不过&#xff0c;并不是每个网站都适合做成单页&#xff0c;一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

创建自定义主机头网站集

当我们在一个SharePoint Web应用程序中创建新网站集时&#xff0c;虽然我们可以指定网站集的路径&#xff0c;但是网站集的主机头&#xff0c;似乎必须使用Web应用程序所定义的主机头。比如&#xff0c;当在“http://sp2010”这个Web应用程序中创建一个新网站集时&#xff0c;网…

查看痕迹_孩子是否浏览过“不良网站”,看手机留下的3种痕迹,过于明显

孩子是否浏览过“不良网站”&#xff0c;看手机留下的3种痕迹&#xff0c;过于明显&#xff01;必须要说&#xff0c;智能手机前所未有地改变了现代人的生活方式。伴随着科技创新的持续发展&#xff0c;手机屏幕再也不只是一个承当通信作用的设备&#xff0c;而是变为了集通信、…

html站点初始化设置怎么写,.NET Core Web网站设置默认页index.html

.NET Core Web网站设置默认页index.html。原来IIS可以设置默认静态页面index.html,index.htm等&#xff0c;项目切换到.NET Core后&#xff0c;发现原来一些地址无法打开了&#xff0c;因为这些地址都是到某个文件夹&#xff0c;没有打全index.html。解决办法是在Startup.cs中增…

对某高校网站的一次友好检测

表妹今年考上了某知名高校&#xff0c;出入好奇昨天对该高校网站进行了一次友情检测。。检测结果一个字烂。。。两个字很烂。。文章没什么技术含量。。请大牛直接飘过。打开其主业后随便点点了发现其地址为 xxx.cn/news_more.asp?lm293 觉得可能存在漏洞。。而且是一个很老的漏…

我记录网站综合系统 -- 技术原理解析[7:CSS类]

CSS是前台工程师的必修课&#xff0c;一般我们使用CSS只是统一写在.css里面。不过&#xff0c;wojilu提供了一些操作CSS的类&#xff0c;你可以将CSS当作一个个类来操作。 源代码位置&#xff1a;\wojilu\Web\UI 我们可以将一个CSS看作一个字典 Dictionary<String, Dictiona…

微软放缓.NET动态语言开发计划,徐汇区网站设计

微软曾经作出承诺&#xff0c;开发能运行在.NET环境的动态语言实现&#xff0c;例如Ruby语言实现IronRuby和Python语言实现IronPython。 当前IronRuby项目有点不妙&#xff0c;核心开发者&#xff0c;项目经理Jimmy Schementi宣布离职&#xff0c; 在他的博客中描述到&#xff…

网站DIV+css弹性+固宽布局案例

当今用户的显示器越来越大的今天&#xff0c;之前的1024*768固宽布局有点越来越不合时宜&#xff0c;对大屏幕的用户而言&#xff0c;两侧空空的留白给人第一眼的印象是严重的屏幕浪费&#xff0c;作为网页设计师的你有责任给这一批用户一个良好的用户界面。 当然为了减少这种屏…

Win7下IIS7.5新建网站错误信息集锦

1、Win7 IIS配置解决ASP的500错误 参考网址http://hi.baidu.com/wenyiguang/blog/item/5d354389b793dcbf0e2444a3.html 2、HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容 参考网址&#xff1a;http://apps.hi.baidu.com/share/detail/33209628 3、处理程…

JAVA开发者应该去的20个英文网站

为什么80%的码农都做不了架构师&#xff1f;>>> JAVA开发者应该去的20个英文网站 2005-09-12 14:28 shiqiang124 CSDN 我要评论(0) 字号&#xff1a;T | T 为JAVA开发者推荐应该去的20个英文网站&#xff01; AD&#xff1a; WOT2014课程推荐&#xff1a;实战MSA&a…

利用火狐浏览器查看网站加载速度

利用火狐浏览器查看网站加载速度2012-12-25 14:01[小大]来源: 自由屋博客评论: 1条评论分享至:百度权重查询站长交易友情链接交换网站监控服务器监控SEO监控首先下载火狐浏览器&#xff0c;如果你有的话就不用下载了&#xff0c;下载之后我们需要Firefox的一个组件—firebug。&…