我有一个customArrayAdapter来在我的gridview中显示我的图片。当我打开活动时,一切顺利,但是当我向下滚动并向后滚动时,它会显示某些项目的triangleRed,而pictureCorrect为1表示该ID(我在DDMS中检查了我的数据库以确定)。它似乎一直在发生相同的项目...这是我的自定义适配器的一部分:
if (mView == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
mView = vi.inflate(R.layout.caa_xml, null);
}
ImageView image = (ImageView) mView.findViewById(R.id.iv_caarow);
ImageView triangle = (ImageView) mView.findViewById(R.id.iv_triangle);
image.setAlpha(255);
triangle.setVisibility(View.INVISIBLE);
//… some additional code to define resizedBitmap
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
image.setImageDrawable(bmd);
if (mView != null) {
Picture pictureGiven = null;
loadDataBase();
pictureGiven = myDbHelper.getPictureGiven(getItem(position).getId(),
player);
int attempts = pictureGiven.getAttempts();
int correctPicture = pictureGiven.getPictureCorrect(); //returns 0 or 1
triangle.setVisibility(View.INVISIBLE);
if (correctPicture == 1) {
triangle.setVisibility(View.VISIBLE);
}
if (correctPicture != 1 && attempts > 0) {
triangle.setVisibility(View.VISIBLE);
triangle.setImageResource(R.drawable.trianglered);
}
}
return mView;
}
任何可能导致此问题的想法?
答案 0 :(得分:2)
由于视图回收,您需要在每种可能的情况下设置三角形的内容。
在这里,如果correctPicture == 1,你的三角形图像资源就是以前的任何东西,可能是三角形的。
if (correctPicture == 1) {
triangle.setVisibility(View.VISIBLE);
// Add whatever initial value it is
triangle.setImageResource(R.drawable.initvalue);
}