2011-07-18 40 views
0

我開始使用Google的網格視圖示例代碼,但我將如何選擇顯示哪些圖像?假設有一次我只想讓eq1和eq4出現,但是又一次我想要eq3,eq 6和eq12出現,我需要對代碼做些什麼? Integer數組包含來自應用程序的另一部分的一些整數,這些整數不會始終相同,我試圖讓這些整數與網格中的哪些圖像相對應。如何選擇在網格視圖中顯示哪些圖像資源?

public class ImageAdapter extends BaseAdapter { 
private Context mContext; 
private int length; 
private Integer[] choices; 

public ImageAdapter(Context c, int inLength, Integer[] inChoices) { 
    mContext = c; 
    length = inLength; 
    choices = inChoices; 
} 

public int getCount() { 
    return length; 
} 

public Object getItem(int position) { 
    return null; 
} 

public long getItemId(int position) { 
    return 0; 
} 

// 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(200, 50)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     imageView.setPadding(8, 8, 8, 8); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setImageResource(mThumbIds[position]); 

    return imageView; 

} 

// references to our images 
private Integer[] mThumbIds = { 
     R.drawable.eq1, R.drawable.eq2, 
     R.drawable.eq3, R.drawable.eq4, 
     R.drawable.eq5, R.drawable.eq6, 
     R.drawable.eq7, R.drawable.eq8, 
     R.drawable.eq9, R.drawable.eq10, 
     R.drawable.eq11, R.drawable.eq12, 
     R.drawable.eq13, R.drawable.eq14, 
     R.drawable.eq15, R.drawable.eq16, 
     R.drawable.eq17, R.drawable.eq18, 
     R.drawable.eq19, R.drawable.eq20, 
     R.drawable.eq21, R.drawable.eq22 
}; 

}

回答

0

這種工作方式是,視圖調用ImageAdapter.getCount以確定有多少圖像應顯示出來,然後對每個位置(0,1呼籲ImageAdapter.getView,...,高達getCount()-1)。所以,如果你只是想表明EQ1和EQ4,getCount應該返回2,然後在getView你就必須更換線

imageView.setImageResource(mThumbIds[position]); 

的東西,知道你想要的mThumbIds元素。這真的取決於你如何決定應該顯示哪些圖像。通常你只想重新mThumbIds與你想要的元素,但如果你想間接的另一層,你可以嘗試這樣的事:

// This will give you eq1 and eq4 
private Integer[] mActiveImages = {0, 3}; 

public int getCount() { 
    return mActiveImages.length; 
} 

,取而代之的是一條線getView

imageView.setImageResource(mThumbIds[mActiveImages[position]]); 
+0

啊無瑕。我之前嘗試過類似的東西,但我一定會搞砸的。我非常感謝幫助。 – tedbrooks2