2012-12-04 38 views
1

我有一個customArrayAdapter在我的gridview中顯示我的照片。一切都很順利,當我打開活動,但當我向下滾動和備份時,它顯示了一些項目的triangleRed,而pictureCorrect爲1(爲了確保我在DDMS中檢查了我的數據庫)。它似乎總是發生在相同的項目...這是我的自定義適配器的一塊:我customarayadapter似乎通過錯誤var

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

任何想法可能會導致這種情況?

+1

我曾經歷過同樣的事情,但沒有找到一個好的靈魂。這感覺就像在列表視圖中的一個小錯誤,關於通過處理圖像引入的滯後。 – dmaij

回答

2

由於查看回收,您需要在每種可能情況下設置三角形的內容。

這裏,如果correctPicture == 1,那麼您的三角形圖像資源就是之前的任何可能的三角形圖像資源。

 if (correctPicture == 1) { 
      triangle.setVisibility(View.VISIBLE); 
            // Add whatever initial value it is 
      triangle.setImageResource(R.drawable.initvalue); 
     } 
+0

我看到了,這聽起來很合邏輯。這就是訣竅,woaha:D謝謝,正在尋找它一段時間! –