RoboSwag/kotlin-extensions
Grigorii 06c9ff8a1f Fix review comments 2022-12-28 19:12:58 +04:00
..
src/main Fix review comments 2022-12-28 19:12:58 +04:00
.gitignore Migration to single repo 2018-09-27 13:52:59 +03:00
README.md Fix submodules' READMEs 2019-09-10 13:58:03 +03:00
build.gradle Add fragment arguments utils 2021-08-19 16:12:28 +12:00

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) }
    }
}