1

グリッドビューに写真を表示するための customArrayAdapter があります。アクティビティを開くとすべてがうまくいきますが、下にスクロールして戻ると、一部のアイテムの三角形が表示されますが、そのIDのpictureCorrectは1です(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;
    }

これを引き起こしている可能性のあるアイデアはありますか?

4

1 に答える 1

2

ビューのリサイクルのため、考えられるすべてのケースで三角形の内容を設定する必要があります。

ここで、 correctPicture == 1 の場合、三角形の画像リソースは以前のものであり、おそらく三角形の赤です。

        if (correctPicture == 1) {
            triangle.setVisibility(View.VISIBLE);
                                   // Add whatever initial value it is
            triangle.setImageResource(R.drawable.initvalue);
        } 
于 2012-12-04T13:20:37.497 に答える