Butterknife android что это

Содержание
  1. Butter Knife
  2. Field and method binding for Android views
  3. Deprecation Notice
  4. Introduction
  5. Resource Binding
  6. Non-Activity Binding
  7. View Lists
  8. Listener Binding
  9. Binding Reset
  10. Optional Bindings
  11. Multi-Method Listeners
  12. Русские Блоги
  13. Подробное объяснение использования Butterknife, обычно используемого в Android
  14. Введение в Butterknife
  15. Настроить в Android studio проект: Butterknife:
  16. 1. В основном Moduel build.gradle Добавьте следующую конфигурацию:
  17. 2. Использование в библиотечных проектах (в соответствии с личными потребностями)
  18. Подробное объяснение основ использования ButterKnife
  19. Специальное использование масляного ножа
  20. Привязать вид:
  21. Привязка файлов ресурсов
  22. Событие мониторинга привязки
  23. Интерфейс действий и интерфейс Setter
  24. Использование плагина Butterknife Zelezny
  25. Интеллектуальная рекомендация
  26. Используйте шаблон состояния вместо if else
  27. Проектирование архитектуры: схема проектирования уровня балансировки нагрузки (5) — установка одного узла LVS
  28. Рыба образования, средняя школа закончила в учебном класс, как найти первую работу.
  29. Синглтон паттерн в питоне
  30. Java Counce Collection
  31. Вам также может понравиться
  32. динамический прокси-сервер jdk (Proxy, InvocationHandler), включая исходный код $ Proxy0
  33. Юля: Об изменениях в Array 1.0
  34. студия Android генерирует статическую библиотеку jni
  35. Nginx 502 раствор
  36. Java вызывает SMS-интерфейс WebService
  37. Обзор Butter Knife
  38. Зачем нужен Butter Knife
  39. Подключение к проекту
  40. View Binding
  41. BindView
  42. Nullable
  43. BindViews
  44. Обработчики
  45. OnClick
  46. OnCheckedChanged
  47. OnTextChanged
  48. Прочие обработчики
  49. Optional
  50. Операции
  51. Action
  52. Property
  53. Setter
  54. Value Binding
  55. Plugin

Butter Knife

Field and method binding for Android views

Deprecation Notice

This tool is now deprecated. Please switch to view binding. Existing versions will continue to work, obviously, but only critical bug fixes for integration with AGP will be considered. Feature development and general bug fixes have stopped.

Introduction

Annotate fields with @BindView and a view ID for Butter Knife to find and automatically cast the corresponding view in your layout.

Instead of slow reflection, code is generated to perform the view look-ups. Calling bind delegates to this generated code that you can see and debug.

The generated code for the above example is roughly equivalent to the following:

Resource Binding

Bind pre-defined resources with @BindBool , @BindColor , @BindDimen , @BindDrawable , @BindInt , @BindString , which binds an R.bool ID (or your specified type) to its corresponding field.

Non-Activity Binding

You can also perform binding on arbitrary objects by supplying your own view root.

Another use is simplifying the view holder pattern inside of a list adapter.

You can see this implementation in action in the provided sample.

Calls to ButterKnife.bind can be made anywhere you would otherwise put findViewById calls.

Other provided binding APIs:

  • Bind arbitrary objects using an activity as the view root. If you use a pattern like MVC you can bind the controller using its activity with ButterKnife.bind(this, activity) .
  • Bind a view’s children into fields using ButterKnife.bind(this) . If you use tags in a layout and inflate in a custom view constructor you can call this immediately after. Alternatively, custom view types inflated from XML can use it in the onFinishInflate() callback.

View Lists

You can group multiple views into a List or array.

The apply method allows you to act on all the views in a list at once.

Action and Setter interfaces allow specifying simple behavior.

An Android Property can also be used with the apply method.

Listener Binding

Listeners can also automatically be configured onto methods.

All arguments to the listener method are optional.

Define a specific type and it will automatically be cast.

Specify multiple IDs in a single binding for common event handling.

Custom views can bind to their own listeners by not specifying an ID.

Binding Reset

Fragments have a different view lifecycle than activities. When binding a fragment in onCreateView , set the views to null in onDestroyView . Butter Knife returns an Unbinder instance when you call bind to do this for you. Call its unbind method in the appropriate lifecycle callback.

Optional Bindings

By default, both @Bind and listener bindings are required. An exception will be thrown if the target view cannot be found.

To suppress this behavior and create an optional binding, add a @Nullable annotation to fields or the @Optional annotation to methods.

Note: Any annotation named @Nullable can be used for fields. It is encouraged to use the @Nullable annotation from Android’s «support-annotations» library.

Читайте также:  Джойстик для pokemon go android

Multi-Method Listeners

Method annotations whose corresponding listener has multiple callbacks can be used to bind to any one of them. Each annotation has a default callback that it binds to. Specify an alternate using the callback parameter.

Источник

Русские Блоги

Подробное объяснение использования Butterknife, обычно используемого в Android

Введение в Butterknife

ButterknifeКитайский, также известный как нож для масла,JakeWhartonОтличный открытый исходный код Поле просмотра Android и привязка метода Фреймворк быстрых аннотаций. Это также более часто используемый фреймворк быстрых аннотаций при разработке Android, поэтому нет необходимости повторять findViewById , Быстро привязывайте несколько событий просмотра в различных ситуациях, значительно повышая эффективность разработки.

Зачем использовать Butterknife для разработки?

1. Мощные функции привязки View и обработки событий Click, упрощающие код и повышающие эффективность разработки 2. Удобное решение проблемы привязки ViewHolder в адаптере 3. Это не повлияет на эффективность приложения во время работы, его легко использовать и настраивать. 4. Код четкий и легко читаемый 5 . .

Настроить в Android studio проект: Butterknife:

1. В основном Moduel build.gradle Добавьте следующую конфигурацию:

Простое использование выглядит следующим образом:

2. Использование в библиотечных проектах (в соответствии с личными потребностями)

1. В Android проекте build.gradle Добавьте следующую конфигурацию:

2. В библиотеке build.gradle Добавьте следующую конфигурацию:

Стоит отметить, что аннотация Butterknife, используемая в библиотеке, использует R2 вместо R.

Подробное объяснение основ использования ButterKnife

Сценарии использования ButterKnife следующие:

1. Связывание ButterKnife в действии:

Стоит отметить: ButterKnife.bind (this) должен быть после инициализации файла макета привязки, иначе будет сообщено об ошибке

2. Связывание масляного ножа во фрагменте:

Стоит отметить, что во фрагменте Butterknife должен быть освобожден при уничтожении представления, иначе это вызовет утечку памяти.

3. Прикрепите масляный нож к ViewHolder адаптера:

Специальное использование масляного ножа

Привязать вид:

1. Аннотация идентификатора элемента управления: @BindView ()

2. Несколько аннотаций идентификаторов элементов управления в макете: @BindViews ()

Привязка файлов ресурсов

1. Свяжите строку: @BindString ()

2. Свяжите массив: @BindArray ()

3. Привязать значение цвета: @BindColor ()

4. Привязать растровое изображение: @BindBitmap ()

5. Привязка других ресурсов:

Событие мониторинга привязки

1. Свяжите событие нажатия элемента управления: @OnClick ()

  • Событие однократного нажатия кнопки управления:
  • Одно и то же событие щелчка для нескольких элементов управления:
  • События множественного нажатия кнопки управления:

2. Привязка события длительного нажатия элемента управления: @OnLongClick ()

3. Привязка других событий

Интерфейс действий и интерфейс Setter

Интерфейс Action в основном предназначен для управления и инициализации представлений или представлений, в то время как интерфейс Setter на самом деле предназначен для управления свойствами или значениями представлений или представлений. Используйте метод ButterKnife.apply (), чтобы включить интерфейс.

Использование плагина Butterknife Zelezny

Когда вы знакомы с основами использования Butterknife, иногда вам все равно придется писать много @BindView () и т.п.

1. Установите подключаемый модуль . Для этого выполните следующие действия: Откройте Android Studio: щелкните Файл —> Настройки —> Плагины —> Поиск Butterknife Zelezny —> Загрузите и установите —> Перезапустите Android Studio.

Выполнив вышеуказанные шаги, вы можете спокойно писать код.

2. Используйте плагины

Щелкните правой кнопкой мыши «Создать», как показано ниже:

Откройте его, и вы увидите все элементы управления в нашем файле макета. Выберите тот, который вам нужен, и можно начинать.

Хорошо, это конец аннотаций к Butterknife. Есть еще много способов использования, которые не были представлены, но это не мешает нам использовать Butterknife с удовольствием. Пойдите и попробуйте.

Интеллектуальная рекомендация

Используйте шаблон состояния вместо if else

Большинство разработчиков все еще используютif elseСтруктура процесса, виделиjdonизbanqСтатья написана Большим Братом, используяcommand,aopЗамена шаблонаif elseСтруктура процесса. Я не совсем понял эт.

Проектирование архитектуры: схема проектирования уровня балансировки нагрузки (5) — установка одного узла LVS

1 Обзор Предыдущая статья «Проектирование архитектуры: проектирование уровня балансировки нагрузки (4) — Принципы LVS» (http://blog.csdn.net/yinwenjie/article/details/46845997), мы предста.

Рыба образования, средняя школа закончила в учебном класс, как найти первую работу.

Self-брат Я девять ноль, теперь занимается разработкой веб-конца Java. Некоторое понимание и восприятие учебных курсов. Учебное заведение является ямой, дорога, что вы уже прошли, только вы знаете, дл.

Синглтон паттерн в питоне

Дизайн шаблона Шаблон дизайна — это краткое изложение предыдущей работы, которое, как правило, широко распространено людьми и является зрелым решением конкретной проблемы. Он предназначен для многораз.

Читайте также:  Дорогой андроид или айфон

Java Counce Collection

TRUEEWAP основан на реализации красных навигаций. Это отображение отсортировано в соответствии с его природооформленным порядком или отсортировано в соответствии с компаратором, предусмотренным при со.

Вам также может понравиться

динамический прокси-сервер jdk (Proxy, InvocationHandler), включая исходный код $ Proxy0

1. Связанные классы и методы: java.lang.reflect.Proxy, Прокси предоставляет статические методы для создания динамических прокси-классов и экземпляров. newProxyInstance() Возвращает экземпляр прокси-кл.

Юля: Об изменениях в Array 1.0

Версии до 1.0, например 0.2-0.6, Но теперь 1.0 это сообщит об ошибке. Это использование претерпело серьезные изменения! такие как: Это можно считать серьезным изменением.

студия Android генерирует статическую библиотеку jni

Android Сяобай, который только что вошел в общество, описывает, как использовать студию Android для создания статической библиотеки jni. 1. Подготовка: Сначала установите ndk, сначала сами Baidu, позж.

Nginx 502 раствор

Общие решения Nginx 502 Bad Gateway следующие: Nginx 502 Ошибка 1: Количество сайтов велико, а количество PHP-CGI мало. Для этой 502 ошибки просто увеличивайте количество процессов PHP-CGI. В частност.

Java вызывает SMS-интерфейс WebService

1. Описание интерфейса WebService Отправьте в виде http-сообщения, выше — информация о запросе, а ниже — возвращаемое значение. Представлен раздел возвращаемого значения документа интерфейса. 2. Код J.

Источник

Обзор Butter Knife

Библиотека Butter Knife позволит вам избежать большого количества однотипного кода, связанного с работой с View элементами в ваших Activity, фрагментах, холдерах и т.д. В этом материале я подробно рассмотрю возможности библиотеки, и на примерах покажу, как вы можете ее использовать.

Зачем нужен Butter Knife

Рассмотрим простой пример. Бывает необходимость показывать/скрывать сразу несколько View в Activity. В стандартном варианте реализации это может выглядеть так:

Объявление списка, поиск элементов по findViewById и добавление в список, перебор списка и установка видимости.

А вот реализация с использованием Butter Knife (и Retrolambda)

Объявление списка, поиск элементов по findViewById и добавление в список — все это выполнила аннотация @BindViews, избавив нас от написания нескольких строк однотипного кода.

А комбинация Butter Knife + Retrolambda позволила одой строкой поменять видимость всем View в списке.

Кроме биндинга View элементов, библиотека умеет вешать на View различные обработчики, выполнять операции над коллекциями View и биндить значения из values. Давайте на примерах рассмотрим все эти возможности.

Подключение к проекту

Для подключения библиотеки к проекту необходимо добавить строки в dependencies в gradle файл модуля

View Binding

BindView

Аннотация BindView избавит вас от необходимости писать строки с findViewById.

Рассмотрим пример. В layout файле описан TextView:

Используем BindView, чтобы получить доступ к этому TextView в Activity:

При работе с BindView от нас требуется указать id TextView элемента и переменную, в которую необходимо этот TextView поместить.

А в onCreate необходимо вызвать метод ButterKnife.bind и передать туда Activity. Этот метод найдет все Butter Knife аннотации в Activity и выполнит необходимые действия. В нашем случае он увидит аннотацию BindView, возьмет R.id.title, найдет TextView и поместит в textViewTitle.

После вызова ButterKnife.bind мы можем работать с textViewTitle.

Вместо типа переменной TextView, вы можете указать View. BindView автоматически выполнит для вас преобразование типа.

Использование BindView для нескольких View элементов выглядит так:

После вызова ButterKnife.bind все эти переменные будут заполнены и готовы к работе.

Если вы используете Butter Knife в фрагментах, то необходимо использовать Unbinder из-за особенностей Fragment Lifecycle.

В onCreateView вызываем bind и сохраняем полученный Unbinder объект в переменную unbinder. А в onDestroyView вызываем unbinder.unbind.

Также, вы можете использовать Butter Knife в холдерах при работе со списками:

Nullable

По умолчанию, если BindView не найдет View с указанным id, то он вызовет Exception. Чтобы избежать этого, используйте аннотацию Nullable.

BindViews

BindViews соберет указанные View в список или в массив.

Собираем три различных View (TextView, EditText, ProgressBar) в список с общим типом — View

Собираем два View (TextView, EditText) в список с общим типом — TextView.

Обработчики

ButterKnife позволяет удобно назначать для View наиболее распространенные обработчики

OnClick

Пометив метод аннотацией OnClick мы указываем, что этот метод будет являться обработчиком клика на View

Читайте также:  Съемная память для андроид

Теперь, при клике на View с будет вызван метод onSaveClick. И вам уже не надо писать ни findViewById, ни setOnClickListener. BindView в этом случае вам также не нужен.

Если необходимо передавать «кликнутый» View в этот метод, то просто добавьте View в параметры метода:

Если вам надо получить конкретный тип View, например, Button, то укажите его:

Butter Knife позволяет назначить один обработчик нескольким View.

OnCheckedChanged

Можно использовать, например, для чекбоксов, чтобы получать его checked-состояние

При изменении значений чекбокса с будет вызываться метод onAgreeChecked.

Параметры метода могут варьироваться. Например, можно получать непосредственно View, которое было “чекнуто”

А можно получать и View и checked-значение

OnTextChanged

Интерфейс TextWatcher содержит следующие методы:

По умолчанию, Butter Knife создает обработчик, соответствующий методу onTextChanged

Если вам нужны два других метода, это делается так:

В аннотации OnTextChanged вам необходимо с помощью параметра callback указать, какой именно метод вам необходим. А метод onTextChanged идет по умолчанию, поэтому для него можно не указывать callback.

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

Посмотреть документацию в Android Studio можно поставив курсор на нужную вам аннотацию и нажав CTRL+Q.

Прочие обработчики

Перечислю, какие еще аннотации вы можете использовать и каким обработчикам они соответствуют.

Optional

По умолчанию, если аннотация обработчика не найдет View с указанным id, то она вызовет Exception. Чтобы избежать этого, используйте аннотацию Optional.

Операции

Butter Knife может выполнять определенные операции над одним View или целой группой View. Для этого используется метод ButterKnife.apply. Его можно вызывать для одного View, списка View и массива View.

Операции бывают трех типов

Action

Если применить Action к группе View, он будет выдавать вам View по одному и указывать его индекс, а вы уже решаете, что с этим View делать.

Например, есть задача, собирать текст со всех EditText в один StringBuilder. Это можно реализовать так:

При создании Action, указываем, что тип View будет EditText. Внутри Action, в методе apply, мы будем получать по одному все наши EditText и их позиции в списке. Для каждого из них мы добавляем в StringBuilder индекс и текст.

Остается вызывать метод ButterKnife.apply и передать ему список EditText-ов и Action.

В итоге, Action будет применен ко всем EditText из списка viewList. И StringBuilder будет содержать пронумерованные тексты из всех EditText.

Property

С помощью Property вы можете быстро установить какое-либо свойство целой группе View.

Setter

Похож на Action, но позволяет дополнительно передавать значение внутрь метода операции.

Например, мы можем создать Setter, который будет устанавливать видимость View.

При создании, мы указываем тип View и тип значения которое будем передавать — Integer. В методе set мы получим View и его индекс (аналогично Action), а также значение Integer, которое будем использовать в методе setVisibility.

Использование этого сеттера выглядит так

В метод apply передаем список View, сеттер и значeние View.VISIBLE. Сеттер прогонит через себя весь список View и для каждого выполнит метод setVisibility(View.VISIBLE).

А если хотим спрятать все View, то используем этот же сеттер, но с значением View.INVISIBLE

Value Binding

Кроме View вы можете биндить различные значения из папки values.

Можно получить как float, так и int значение.

Существуют следующие аннотации для биндинга значений:

Я описал практически все возможности текущей версии Butter Knife. Если чего пропустил, или с выходом новой версии появилось что-то интересное, пишите на форуме — я дополню материал.

Plugin

Для Android Studio есть полезный плагин

Он за вас сможет создать BindView и OnClick.

При использовании, убедитесь, что курсор стоит на layout файле.

Присоединяйтесь к нам в Telegram:

— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.

— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Источник

Оцените статью