我正在尝试显示整个对象列表,但我只显示最后一个列表。
我用于旅行的代码,但它只显示了列表的最后一个。
抱歉我的英语不好:(
代码:
if(!L.isEmpty()){
for(Iterator<Bits> i = L.iterator(); i.hasNext(); ) {
Bits item = i.next();
imageBit.setImageBitmap(BitmapFactory.decodeFile(item.getbImage()));
nameBit.setText(item.getbText());
System.out.println(item);
}
}
答案 0 :(得分:1)
这是因为您每次迭代都要为nameBit TextView设置新的文本值。对于ImageView也是如此。因此,当循环到达其结尾时,它会为最后一个项目名称指定文本值,并为图像指定相同的文本值。您可能应该为文本做下一步:
if(!L.isEmpty()){
StringBuilder builder = new StringBuilder();
for(Iterator<Bits> i = L.iterator(); i.hasNext(); ) {
Bits item = i.next();
imageBit
.setImageBitmap(
BitmapFactory.decodeFile(item.getbImage())
);
builder.append(item.getbText()).append("\n");
}
String resultingText= builder.toString();
nameBit.setText(resultingText);
System.out.println(resultingText);
}
这将显示TextView中的所有文本值。 顺便说一句,通过imageBit中的这种实现,您只能看到最后一张图像。 所以我假设你没有正确选择架构。请参阅ListView或RecyclerView文档。这个视图的目的是显示对象列表,如果您正确实现它。
答案 1 :(得分:0)
要显示延迟所有图像,请尝试此操作。
在您的班级中创建以下变量:
final Handler handler = new Handler();
private int currentPosition = 0;
然后调用以下方法开始在onCreate,onResume中显示图像,或者当您想要全部启动时:
showNextImage();
Ant showNextImage的代码应该是这样的:
private void showNextImage() {
// loads the image at position currentPosition
Bits item = L.get(currentPosition);
imageBit.setImageBitmap(BitmapFactory.decodeFile(item.getbImage()));
nameBit.setText(item.getbText());
System.out.println(item);
currentPosition++; // updates the current position
if (L.size() > currentPosition) { // more images to show?
// loads the next image after some delay
handler.postDelayed(new Runnable() {
@Override
public void run() {
showNextImage();
}
}, 1000); // in millis, 1000 for one second delay
}
}
我添加了一些评论只是为了澄清。你可以删除它们。
它应该有用。