Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何选择在网格视图中显示哪些图像资源?_Android_Gridview - Fatal编程技术网

Android 如何选择在网格视图中显示哪些图像资源?

Android 如何选择在网格视图中显示哪些图像资源?,android,gridview,Android,Gridview,我从谷歌的网格视图示例代码开始,但我如何选择显示哪些图像?比如说,有一次我只想让eq1和eq4出现,但另一次我想让eq3、eq 6和eq12出现,我需要对代码做什么?整数数组包含来自应用程序另一部分的一些整数,这些整数不会一直是相同的,我正试图让这些整数与网格中的图像相对应 public class ImageAdapter extends BaseAdapter { private Context mContext; private int length; private Integer[]

我从谷歌的网格视图示例代码开始,但我如何选择显示哪些图像?比如说,有一次我只想让eq1和eq4出现,但另一次我想让eq3、eq 6和eq12出现,我需要对代码做什么?整数数组包含来自应用程序另一部分的一些整数,这些整数不会一直是相同的,我正试图让这些整数与网格中的图像相对应

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

}其工作方式是视图调用
ImageAdapter.getCount
来确定应该显示多少图像,然后为每个位置调用
ImageAdapter.getView
(0,1,…,直到
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]]);

啊,完美无瑕。我以前也试过类似的东西,但我一定把它弄糟了。我真的很感谢你的帮助。