I suggest to create a "CharacterReflection" object in your game that updates his sprite and position based on the character's current sprite and position, and is drawn only if character is above water.
I mean, in every update() call of this new object, you set the sprite to be the copy of the character's sprite and then reflect it on Y axis. The reflection position coordinates will always be the same as the character for X axis and a fixed Y position below the character. Obviously, before drawing the reflection sprite you'll need to check if there is water below the character.
Sorry for not putting examples of code but i'm at work at the moment.