Пример Kotlin:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.act_signin)
packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES).apply {
findViewById<TextView>(R.id.text_version_name).text = versionName
findViewById<TextView>(R.id.text_version_code).text =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) "$longVersionCode" else "$versionCode"
}
packageManager.getApplicationInfo(packageName, 0).apply{
findViewById<TextView>(R.id.text_build_date).text =
SimpleDateFormat("yy-MM-dd hh:mm").format(java.io.File(sourceDir).lastModified())
}
}
не благодарят:-)
Алгоритм, который вы ищете, - это Самая длинная общая подпоследовательность , он делает большую часть работы за вас.
Схема похожа на эти строки.
Например, у вас есть:
«привет, мир, это тест»
по сравнению с:
«мистер, привет, мир»
Результатом LCS будет
Теперь посыпьте специальный соус при наращивании. Вы соединяете нить вместе, не забывая о предыдущем действии. Наивный алгоритм - это просто объединение разделов, которые представляют собой одно и то же действие.
Наконец, вы преобразовываете его в html:
<ins>mister</ins> hello world <del>this is a test</del>
] Конечно, дьявол кроется в деталях: