Bueno según veo en tu código, el error es el siguiente
if(String.valueOf(Cadena.getText().charAt(i)).toUp perCase().equals(
String.valueOf(v2).toUpperCase()))
si eso esta en un key release, lo que sucede es, que la primera ves v2 es igual al primer caracter de la cadena que capturaste en Buscar.getText(), mientras que cuando ingresas el siguiente caracter ya la cosa cambia porque no es un caracter si no 2 te explico en un ejemplo.
cadena = "hola"
buscar = "h"
resultado if = true para todo los i posibles donde se encuentre el caracter h en la cadena,
ahora cuando presionas otra teclas seria:
cadena = "hola"
buscar = "ho"
resultado if = false para todo los i posibles por que estas comparando cada caracter de la cadena con la cadena "ho"
bueno creo que ese es tu problema, corrígeme si me equivoco porfa que estamos para aprender