• 0
  • Contact Me: alexbashy9001@gmail.com

Chips #2

У Chips есть два важных метода – setOnClickListener и setOnCheckedChangeListener

Метод setOnCheckedChangeListener отвечает за опцию выбора. То есть Вы можете выбрать сразу несколько Chips и что-то сделать с ними.

Метод setOnClickListener отвечает за опцию тапа по Chips.

Давайте вернемся к примеру из предыдущего урока. У нас есть три кнопки при тапе по которым создаются Chips в Chip Group. Давайте реализуем опцию выбора несколько Chips. При выборе – текст Chip должен меняться на “Выбрано”, при снятии состояния выбора текст меняется на “Отмена”

Мы в методе обработки тапов по нашим кнопкам, после кода в котором создавали объект Chip – обращаемся к нашему объекту Chip и вызываем метод setOnCheckedChangeListener, в котором реализуем смену название для Chip

chip.setOnCheckedChangeListener { chip, isChecked ->
if (isChecked) chip.text = getString(R.string.selected)
else chip.text = getString(R.string.noSelected)
}

Давайте разберем этот код. Мы ставим условие при котором – если Chip устанавливается в состояние выбранный (isChecked) – то меняем его название на “Выбрано”, иначе если мы снимаем галочку, то устанавливаем название “Отмена”. Но в состоянии когда мы еще не выбрали или не отменили наш Chip – текст по умолчанию устанавливается в зависимости от того по какой кнопке мы до этого тапнули.

Теперь мы переходим ко второму методу. Он работает по стандартной схеме. Мы вешаем прослушивателя тапов. Внутри которого реализуем функционал. Мы сделаем так, что бы пи тапе по Chip у нас появлялся SnackBar с названием того Chip, по которому мы тапнули. Чуть ниже метода setOnCheckedChangeListener мы и размещаем наш метод обработки тапа setOnClickListener

chip.setOnClickListener(View.OnClickListener {
Snackbar.make(it, chip.text.toString(), Snackbar.LENGTH_LONG)
.setAction(R.string.play){
val start = Intent(this, MainActivity::class.java)
startActivity(start)
}
.setBackgroundTint(ContextCompat.getColor (this, R.color.colorPrimary))
.setTextColor(ContextCompat.getColor (this, R.color.colorPrimaryDark))
.show()

})

Хочу обратить Ваше внимание на то, что этим участком кода мы передаём название нашего Chip

chip.text.toString()

Теперь наши Chips будут работать c этими методами

Chips как и любой виджет из концепции Material Design имеет не только дополнительные атрибуты для настройки внешнего вида, но и шаблонные стили. С ними Вы можете ознакомиться вот на этой странице

ДОМАШНЕЕ ЗАДАНИЕ

Настройте для наших Chips – методы обработки выбора и тапов. Результат в формате видео пришлите на Whats App – +79612777611

Leave a Reply

Your email address will not be published. Required fields are marked *