You define index
every time to 0
then increment it, but after call.
That's why your button always shows "A".
move int index = 0;
onto onCreate
before handler = new Handler();
new Timer().schedule(new TimerTask(){
@Override
public void run() {
runOnUiThread(new Runnable(){
@Override
public void run() {
letterButton.setText(alphabet[index++]);
};
});
}
}, 0, 1000);
Looks bit overcomplicated, but after some training it becomes easy.