|
|
||
|---|---|---|
| .. | ||
| src/main | ||
| .gitignore | ||
| README.md | ||
| build.gradle | ||
README.md
kotlin-extensions
Модуль содержит extension-функции для Activity, Context, Delegates, TextView, View и ViewHolder.
Основные интерфейсы и классы
Расширения для Activity:
- safeStartActivityForResult - функция для запуска нового активити с
requestCode, который будет передан в onActivityResult при завершении работы данного активити. Находит наиболее подходящий активити для выполнения действия. Если не будет найден ни один активити для выполнения действия, то функция ничего не сделает и вернетfalse.
Расширения для Context:
-
safeStartActivity - функция запуска активити, аналогична safeStartActivityForResult, но не позволяет передать
requestCode. -
openBrowser - функция для открытия ссылки в браузере через safeStartActivity.
-
callToPhoneNumber - функция для открытия программы "Телефон" с переданным номером телефона через safeStartActivity.
Расширения для TextView:
- drawableStart, drawableTop, drawableEnd, drawableBottom - функции для установки и получения
Drawableна соответсвующих позициях.
Расширения для View:
- setOnRippleClickListener - функция для добавления Ripple-эффекта и действия, которое будет выполняться при нажатии на
View.
Расширения для ViewHolder:
-
ViewHolder.findViewById - функция для поиска
View, расположеного внутри itemView. -
ViewHolder.getText - функция для получения текста из ресурсов.
-
ViewHolder.getString - функция для получения строк из ресурсов. Может также принимать вторым аргументом и далее - строки, которые будут подставлены вместо специальных символов в строку из ресурсов.
-
ViewHolder.getColor - получить цвет в виде
Intиз ресурсов. -
ViewHolder.getColorStateList - получить
ColorStateList, который ассоциируется с переданным цветом. -
ViewHolder.getDrawable - получить
Drawableиз ресурсов.
Расширения для Delegates:
-
observable - подписка на изменения свойства, принимает
initialValue- начальное значение иonChange- действие, которое будет выполняться после каждой установки свойства. -
distinctUntilChanged - тоже самое, что и предыдущее расширение, только
onChangeбудет выполняться лишь в том случае, когда свойство принимает новое значение не равноеnullи отличное от предыдущего.
Примеры
class LinkViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val linkView: TextView = findViewById(R.id.item_link)
private val linkColor = getColor(R.color.global_action)
fun bind(link: String) {
linkView.text = link
linkView.setOnRippleClickListener { context.openBrowser(link) }
}
}