Я думаю, что вы пытаетесь спросить: «Как заставить мой TextView показывать его обновленное содержимое без возврата контроля в runloop?» (т.е. возвращение из вашей функции).
Если это так, я боюсь, что вам не повезло, такое невозможно сделать с моделью пользовательского интерфейса Android. Самое близкое к этому, что возможно, это отслеживать состояние вашего цикла и установить таймер, который будет вызывать функцию для вас, чтобы обновить TextView.
Вот пример. Предположим, вы хотите поместить текст «это тест» в TextView, по одному символу за раз:
private Handler mHandler = new Handler();
private String desiredText = new String("This is a test");
private Runnable mUpdateTextView = new Runnable() {
public void run() {
TextView textView = (TextView)findViewById(R.id.myTextView);
int lengthSoFar = textView.getText().length();
if (lengthSoFar < desiredText.length()) {
mTextView.setText(desiredText.substring(0, lengthSoFar + 1));
mHandler.postDelayed(100, mUpdateTextView);
}
}
};
protected void onStart() {
mHandler.postDelayed(100, mUpdateTextView);
}
Я думаю, что некоторые из моих объектов видимости здесь неправильные, и у меня нет среды Android, удобной для тестирования, но вы понимаете общее представление. Вместо обработчика вы также можете использовать таймер, но он немного тяжелее, поэтому зависит от того, как часто вы хотите обновлять пользовательский интерфейс.