2013-04-03 3 views
0

Так что я уверен, что правильно их использую, но по какой-то причине я получаю последнее обновление.Android TextView и ImageView не обновляются до конца цикла

for(int i=0; i<numImages; i++) 
{ 
    // Stuff processes here including getting a new Bitmap bmp image 
    imageView.setImageBitmap(bmp); 

    text.setText(text.getText()+"image "+i+" a success!\n"); 
    Log.d("update", text.getText()+"image "+i+" a success!\n"); 
} 

Сообщения журнала отображаются как ожидалось, но я вижу только окончательное обновление текста и окончательное изображение в последовательности. Я не уверен, что я делаю неправильно

+1

Итерационный цикл и отображение изображения только в ImageView? Что вы хотите точно? –

+0

Вы хотите показать какую-то анимацию? вы пытаетесь сделать это каждый определенный промежуток времени ?. ваш код переопределяет последний бит и текст при каждом запуске цикла – RobertoNovelo

ответ

1

Поскольку вы обновляете то же самое ImageView: imageView и то же самое TextView: text, будет видно только последнее растровое изображение и текст.

Вы пытаетесь добавить все растровые изображения и соответствующий текст в макет?

ли что-то вроде:

for(int i=0; i<numImages; i++) 
{ 
// Stuff processes here including getting a new Bitmap bmp image 
ImageView imageView = new ImageView(this); 
imageView.setImageBitmap(bmp); 
parent.addView(imageView); 

TextView text = new TextView(this); 
text.setText(text.getText()+"image "+i+" a success!\n"); 
parent.addView(text); 
Log.d("update", text.getText()+"image "+i+" a success!\n"); 
} 

Если вы хотите добавить Bitmap к ImageView каждые несколько секунд:

private Timer timer = new Timer(); 
private TimerTask timerTask; 
timerTask = new TimerTask() { 
public void run() { 
runOnUiThread(new Runnable() { 
@Override 
public void run() { 
     //Keep a count and change the ImageView and Text depending on that count 
     } 
}); 
} 
}; 
timer.schedule(timerTask, 0, 5000); 
+0

Ну, у меня есть куча изображений, загружаемых из файла. На них делается некоторая обработка. Я хочу иметь возможность отображать 1 и текст, в идеале иметь паузу, затем отображать следующую и так далее до конца цикла –

+0

Затем использовать таймер и запускать цикл каждые 2 секунды или около того. –

+0

Проверьте отредактированную часть –

0

Вы должны создать буфер, затем добавить вашу строку буфер каждый раз. затем, наконец, показать его Пример

StringBuffer buff = new StringBuffer(); 

for(int i=0; i<numImages; i++) 
{ 
    // Stuff processes here including getting a new Bitmap bmp image 
    imageView.setImageBitmap(bmp); 
    buff.append (text.getText()+"image "+i+" a success!\n"); 
} 
Log.d(buff.toString()); 
+0

Ну, я не хочу, чтобы все это отображалось в конце. Я хочу, чтобы текст отображался на каждой итерации. Обычно обработка занимает порядка секунд, поэтому я должен видеть каждое изображение/текст в последовательности –

0

Я сталкивался с такими проблемами, когда я хочу, чтобы обновить ListView.
В моем журнале показано, что несколько notifyDataSetChanged() были успешно выполнены, но только последний вызов изменил listview, и оказалось, что я поместил свои вычисления в основной поток, который заблокировал работу пользовательского интерфейса.

Итак, убедитесь, что ваш код запущен в отдельном потоке, только работайте с UI в основном потоке. Вы можете попробовать весь свой код в новой теме и поставить text.setText(text.getText()+"image "+i+" a success!\n"); в runOnUiThread

Смежные вопросы