Любой способ изменить имена для автоматически созданных представлений kotlin-extensions? - PullRequest
0 голосов
/ 11 ноября 2018

Я новичок в Котлине. Я выделил красный https://kotlinlang.org/docs/tutorials/android-plugin.html и заметил, что представления могут быть автоматически привязаны к активности через импорт kotlinx.android.synthetic.main.activity_main.*.

Если я объявил представление с id = "btn_login" в Activity, я могу получить к нему доступ через

activity.btn_login.setText("Login")

Но. Есть ли способ изменить псевдоним для просмотра, например, ButterKnife:

@BindView(<id of view>)
<name of view>

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Насколько я знаю, единственный способ - использовать именованный импорт. Это действительно приятная особенность языка Kotlin, которую Java не поддерживает. К сожалению, это требует ручной настройки для тех, кого вы хотите заменить, так что это может быть немного шаблонно.

Но вы можете изменить свой импорт на:

import kotlinx.android...your_view as yourView

Это относится ко всем без исключения импортам, а также к любым типам. Это может быть сделано с помощью классов, методов, констант ... Как вам хочется.

Хотя, если вы можете получить доступ к файлам XML, я рекомендую просто изменить идентификаторы там. В любом случае, нет причин не использовать camelCase, и это немного проще, чем использовать as customName при каждом импорте.

0 голосов
/ 11 ноября 2018

Это синтетический импорт, поэтому технически вы можете использовать псевдоним импорта, чтобы вызвать его под другим именем:

import kotlinx.android.synthetic.main.activity_main.view.btn_login as btnLogin

Но, учитывая, что не существует инструмента, который делает это автоматически, вы можете использовать другую схему именования идентификаторов.

Вот разумный:

Что-Где-Описание-Модификатор:

recyclerSearchSuggestions - RecyclerView, показывающий подсказки поиска

fabSearchGo - FloatingActionButton, который выполняет поиск

textSearchFilterChip - TextView, представляющий поисковые фильтры, стилизованные под чип материала

buttonSearchClearFilter - кнопка, которая очищает выбранные чипы фильтра

editSearchFilter - EditText используется для сужения предложений поиска

...