2012-02-19 78 views
0

我正在使用GridView示例Android Developers。我正在調整示例代碼,以使用GridView 9x9圖像顯示Sudoku板。 (它可能是9x9文本數字,但我選擇了圖像)。有關位置0的Android GridView問題

的示例代碼包含此用於設置ImageViews(mThumbIds是圖像資源ID的排列):

// create a new ImageView for each item referenced by the Adapter 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 
    } 

所有好爲止,並將其初始化精細。

我跟蹤每個單元格的imageViews,所以當我想顯示不同的圖像時(通過單擊圖像本身),我可以使用它們。

再次這工作正常,,除了位置0(GridView中的第一項)。這堅決停留在mThumbIds的上面。 即 我用

imageView.setImageResource(imgId) 

改變電網不同地點的圖像,他們除了位置0

所有更改代碼,沒有例外運行,但圖像永遠不會改變。 位置0有什麼特別的嗎?這正成爲一個頭發損失的情況 - 任何建議感激地收到。

+0

通過http://developer.android.com/reference/android/widget/GridLayout.html,GridLayout將是數獨遊戲的更好選擇 – 2012-02-23 19:15:50

回答

0

您的getView代碼看起來很好,但它可能沒有被調用。您需要觸發重繪。

如果您的適配器是BaseAdapter(或BaseAdapter的子類),請調用網格適配器上的notifyDataSetChanged()以強制重繪。 類似於:

((BaseAdapter)mGridView.getAdapter())。notifyDataSetChanged();