0

所以我很确定我正确地使用了它们,但由于某种原因,我只得到了最后一次更新。

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");
}

日志消息按预期显示,但我只看到序列中的最终文本更新和最终图像。我不确定我做错了什么

4

3 回答 3

1

由于您正在更新 sameImageView: imageView和 same TextView: text,因此只会看到最后一个 Bitmap 和 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");
}

如果您想每隔几秒向 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);
于 2013-04-03T05:34:32.783 回答
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());
于 2013-04-03T05:34:52.210 回答
0

当我想更新我的列表视图时,我遇到了这样的问题。
我的日志显示成功执行了几个 notifyDataSetChanged() 但只有最后一次调用更改了列表视图,结果我将计算放在了主线程中,这阻塞了 UI 操作。

因此,请确保您的代码在单个线程中运行,仅在主线程中执行 UI 相关操作。您可以尝试将所有代码放在一个新线程中并放入 text.setText(text.getText()+"image "+i+" a success!\n");runOnUiThread

于 2013-04-03T06:39:37.677 回答