How to read/write a boolean when implementing the Parcelable interface?
I'm trying to make an ArrayList
Parcelable
in order to pass to an activity a list of custom object. I start writing a myObjectList
class which extends ArrayList<myObject>
and implement Parcelable
.
Some attributes of MyObject
are boolean
but Parcel
don't have any method read/writeBoolean
.
What is the best way to handle this?
Here's how I'd do it...
writeToParcel:
dest.writeByte((byte) (myBoolean ? 1 : 0)); //if myBoolean == true, byte == 1
readFromParcel:
myBoolean = in.readByte() != 0; //myBoolean == true if byte != 0
You could also make use of the writeValue method. In my opinion that's the most straightforward solution.
dst.writeValue( myBool );
Afterwards you can easily retrieve it with a simple cast to Boolean
:
boolean myBool = (Boolean) source.readValue( null );
Under the hood the Android Framework will handle it as an integer:
writeInt( (Boolean) v ? 1 : 0 );