在前几天的内容中,当我完成搜寻时,都会使用parseBoardArticle方法将目前画面的内容传入,今天主要就是看这个Method在做些什麽事。
private fun parseBoardArticle(result: String) {
val articleList = mutableListOf<Article>()
val articlePattern =
Pattern.compile("([●]|[ ])*(?<no>[0-9]+)[ ].([0-9 X]+|爆)(?<date>../..)[ ](?<author>.*?)([\\s□转]|R:)+(?<title>.*)")
val rows = result.split("\n")
for (row in rows) {
val matcher = articlePattern.matcher(row)
if (matcher.find()) {
val article = Article(
matcher.group("no")?.trim(),
matcher.group("date")?.trim(),
matcher.group("author")?.trim(),
matcher.group("title")?.trim()
)
articleList.add(0, article)
Log.d(mTag, "article=$article")
}
}
articleAdapter.setData(articleList)
}
可以看到主要的分析方式是使用Pattern。
解析出来後便是将需要的内容存至data class Article。
data class Article(
val number: String?,
val date: String?,
val author: String?,
val title: String?
)
并加入至articleList中,由於我希望将比较新的文章放在RecyclerView的第一项,因此add时固定加入到首位。articleAdapter则是该RecyclerView的Adapter,预计明天应该会看一下里面的内容跟处理新增资料的功能。
另外在移除搜寻项目过程呼叫refreshSearch时,若searchTitleSet和searchAuthorSet都无内容,则将articleAdapter的列表清空。
//...
if (searchTitleSet.isEmpty() && searchAuthorSet.isEmpty()) {
articleAdapter.setData(listOf())
return@withContext
}
//...
>>: [重构倒数第02天] - Slots 与 Render Functions 的进阶心法
今天内容为介绍Photon同步元件,以及修改GameManager.cs,来生成角色。 ...
今天要来介绍Composite Pattern,是属於Structural Design Pat...
画流程图是我的第一堂程序课内容,大学教授讲了很多话,我记得的寥寥无几,其中一句话是:你画的出来就写得...
一样先从建立表格开始,这张表格除了储存来自Line的使用者资讯,也预留了未来资料的输入栏位 栏位 说...
昨天我们利用Bootstrap的框架做了一个三栏的版面,而今天我们就是要利用Bootstrap不同的...