设计是这样的,通过读取assets中的json文件,通过json来生成默认界面。而在网络可用的情况下,从服务器端获取对应的json数据,并生成对应的界面。
首先,我们将生成的json文件放在
assets/data/content_home.json
json文件的内容大概是这样的一个结构:
接下来,需要从这个文件里面读取json内容。因为数据内容是一个JSONArray,所以封装一个方法,直接返回JSONArray。
fun readJsonArray(fileName: String): JSONArray? = JSON.parseArray(readAsString(fileName))
fun readAsStream(fileName: String): InputStream? = AppContext.appContext?.assets?.open(fileName)
fun readAsString(fileName: String): String? = readAsStream(fileName)?.use { inputStream ->
BufferedReader(InputStreamReader(inputStream, "utf-8")).use {
val stringBuffer = StringBuffer()
it.forEachLine {
stringBuffer.append(it)
}
stringBuffer.toString()
}
}
其实也就是读取文件,主要是这段
context.assets.open(fileName: String)
执行一下,看看结果:(因为比较长,省略了一部分)
[{"content":[{"contentUrl":"https://vickytang.applinzi.com/blogs/kotlin/%E5%B0%8F%E7%8B%AE%E5%AD%90%E7%9A%84Kotlin%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF%EF%BC%88%E4%B8%80%EF%BC%89.html","defaultImageId":0,"id":0,"imageUri":"","subTitle":"Kotlin","title":"小狮子的Kotlin学习之路(一)"},
...],
"id":0,"title":"Kotlin教程"},{"content":[{"contentUrl":"https://vickytang.applinzi.com/blogs/essay/android/kotlin%E5%AE%9E%E7%8E%B0MVVM%E6%A1%86%E6%9E%B6%E4%BD%BF%E7%94%A8DataBinding%E4%B9%8Bunresolved%20reference%20BR%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95.html","defaultImageId":0,"id":0,"imageUri":"","subTitle":"Kotlin","title":"小狮子Android杂记之MVVM框架"}],"id":0,"title":"Kotlin杂记"},{"content":[{"contentUrl":"https://blog.youkuaiyun.com/luckyion/article/details/105317368","defaultImageId":0,"id":0,"imageUri":"","subTitle":"Kotlin","title":"小狮子的Android杂记之Deepin下连接Android真机调试"}],"id":0,"title":"Android杂记"}]
可以看到,Kotlin读取文件还是很方便哒。