Если у вашего класса есть атрибут Boolean и вам нужно реализовать Parcelable, то эта короткая статья именно для вас. Приступим!
💡 Советы: Если вам нужно что-то напомнить о том, как реализовать Parcelable, прочтите мою короткую серию статей 👍:
Демо-класс
Это класс, с которым мы будем работать, House
. Он имеет логический атрибут isNearSchool
. Не торопитесь, чтобы просмотреть код, и когда будете готовы, продолжайте читать 👌
Написание логических значений
Чтобы записать логическое значение в посылку, вы можете использовать этот синтаксис в методе writeToParcel
:
parcel.writeInt(<variable> ? 1 : 0);
Здесь вы можете увидеть полный код:
@Override public void writeToParcel(Parcel parcel, int i) { parcel.writeInt(isNearSchool ? 1 : 0); }
Более пристальный взгляд 🔍
Давайте подробнее рассмотрим это выражение:
<variable> ? 1 : 0
Это означает, что если <variable>
равно true
, целое число будет 1
, а если <variable>
равно false
, целое число будет 0
.
(В этом случае мы заменяем <variable>
на isNearSchool
)
true → 1
false → 0
Чтение логических значений
Чтобы прочитать логическое значение из посылки, вы можете использовать этот синтаксис в конструкторе House
, который принимает Parcel в качестве аргумента:
in.readInt() == 1
Здесь вы можете увидеть полный код:
protected House(Parcel in) { isNearSchool = in.readInt() == 1; }
Более пристальный взгляд 🔍
Давайте подробнее рассмотрим это выражение:
in.readInt() == 1
Наша логика для записи логического значения в посылку была:
true → 1
false → 0
У нас было логическое значение, и мы преобразовали его в int.
Теперь, чтобы прочитать значение, нам нужно сохранить ту же логику, но в обратном порядке, потому что мы будем читать int и должны преобразовать его в соответствующее логическое значение:
1 → true
0 → false
Для этого мы можем проверить, равно ли прочитанное int 1, и это сохранит нашу логику нетронутой:
isNearSchool = in.readInt() == 1;
Если значение равно 1
, логическое значение, присвоенное isNearSchool
, будет true
, иначе будетfalse
. ✅ Именно то, что нам нужно.
1 → true 0 → false
👏 Надеюсь, вы нашли эту статью полезной. Спасибо, что помогаете другим найти эту статью 😃. Заранее большое спасибо!