我需要显示带有一些图像的ListView
,我正在使用以下代码:
dataText = (TextView)findViewById(R.id.data);
dataText.setText(camping.stringIn + " >> " + camping.stringOut);
l = name.length;
ArrayList<tipologia> tipologieList=new ArrayList<tipologia>();
tipologia[] tip = new tipologia[l];
for (int i = 0; i < l; i++)
{
int rand = new Random().nextInt(3);
availability[i] = String.format("%d", rand);
tip[i] = new tipologia(image[i]);
}
for(int i=0; i<tip.length; i++)
{
tipologieList.add(tip[i]);
}
ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
for(int i=0;i<tipologieList.size();i++){
tipologia t = tipologieList.get(i);
HashMap<String,Object> tipologieMap = new HashMap<String, Object>();
tipologieMap.put("image", t.getImm());
data.add(tipologieMap);
}
String[] from={"image"};
int[] to={R.id.personImage};
SimpleAdapterMod adapter=new SimpleAdapterMod(
getApplicationContext(),
data,
R.layout.tipologia,
from,
to);
adapter.setViewBinder(new ViewBinder() {
public boolean setViewValue(View view, Object data,
String textRepresentation) {
if(data instanceof String && view instanceof Immagine ){
((Immagine)view).loadFromURL((String)data);
}
return true;
}
else{
return false;
}
}
});
我遇到了一个问题:在列表中有4行的空间,当我向下滚动时,第五行的图像与第一行的图像相同,后续图像也是错误的。< / p>
有人可以告诉我为什么吗?
答案 0 :(得分:3)
这是因为第一行的视图被重用于第五行,因为第一行现在不再可见。问题出在您的适配器类中。
在getView()
方法中,请勿重复使用convertview
,而是每次都返回一个新视图。这不是推荐的解决方案,而是作为最后的手段使用。