引言
在写第一篇Kotlin文章的时候就已经打算做个项目好好的练练,于是选用了开眼app作为练手项目全程使用Kotlin。
在上一篇文章中已经获取到了页面数据,由于其页面通过JSON动态布局(个人观点),因此需要:熟练的JSON解析能力和自定义控件的能力
在下在这里就献个丑
正文
首先看一下对比图
单击按钮获取数据,上面的数据表示根ViewGroup包含的子View
页面的内容还是很多的
看一下这个页面总共用了多少个控件
刚好10个,不用担心最后自定义控件会很多,因为其它页面也同时在使用这些控件。那如何将控件封装好?如何去初始化控件?这两个问题显得尤为重要,否则不同界面间各顾各的不仅开发起来困难以后也很难维护。
思路
- 我要达到的效果很简单,通过一个JSONObject转换成View
- 其中JSONObject含有View的类型和数据(开眼的JSON结构是这么做的)
- 创建model包含View的类型和数据
实现
1、分析JSON
返回的JSONObject中结构是这样的,一个列表和列表总数
具体的JSONObject都含有一个type和data的JSONObject
data的JSONObject里有含有一个dataType用来标示具体的数据类型也就是图中的itemList,不同的dataType下面代的JSONObject也不同,重点理解
2、创建mode ViewData
/**
* Created by mr.lin on 2018/1/7.
* 控件数据
*/
data class ViewData(private var jsonObject: