Android,图像适配器,getCount()中的空指针异常

Android,图像适配器,getCount()中的空指针异常,android,gridview,Android,Gridview,我想使用一个整数来设置图像适配器添加到gridview中的图像数量,而不是数组的长度,但是当我在getCount()中放入任何其他内容时,它总是给出null指针异常。我需要设置这一点,因为我正在将图像随机添加到网格中,我希望网格中显示一定数量的图像,这取决于从上一个活动解析的整数。我还尝试使用一些if语句来检查diff是2还是3,如果是,它将返回一个其他数组的长度,我设置了一个else语句,因此如果diff是任何其他数字,它将使用当前数组的长度,但这也给出了一个空指针 那么,如何让它向gridv

我想使用一个整数来设置图像适配器添加到gridview中的图像数量,而不是数组的长度,但是当我在getCount()中放入任何其他内容时,它总是给出null指针异常。我需要设置这一点,因为我正在将图像随机添加到网格中,我希望网格中显示一定数量的图像,这取决于从上一个活动解析的整数。我还尝试使用一些if语句来检查diff是2还是3,如果是,它将返回一个其他数组的长度,我设置了一个else语句,因此如果diff是任何其他数字,它将使用当前数组的长度,但这也给出了一个空指针

那么,如何让它向gridview添加动态数量的图像,而不是一个数组的长度呢

Integer diff, gridSize, randomPosition, item;
GridView grid;
ImageView img;
Random rng;
ImageView imageView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    grid = (GridView)findViewById(R.id.grid);
    grid.setAdapter(new ImageAdapter(this));
    rng = new Random();

    Bundle pack = this.getIntent().getExtras();
    diff = pack.getInt("dif");

    if (diff == 1){
        gridSize = 16;
        grid.setNumColumns(4);
    }

    if (diff == 2){
        gridSize = 25;
        grid.setNumColumns(5);
    }

    if (diff == 3){
        gridSize = 36;
        grid.setNumColumns(6);
    }


public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return gridSize; // this used to return mThumbIds.length by default and it worked then
    }

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

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

    public View getView(int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
            randomPosition = rng.nextInt(gridSize);
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(3, 3, 3, 3); 
            } 
            else {
                imageView = (ImageView) convertView;
            }

            imgSet();
            return imageView;
    }

    public void imgSet(){
        if (diff == 1){
            imageView.setImageResource(mThumbIds[randomPosition]);
        }
        if (diff == 2){
            imageView.setImageResource(mThumbIds2[randomPosition]);
        }
        if (diff == 3){
            imageView.setImageResource(mThumbIds3[randomPosition]);
        }
    }

然后,我将图像数组放在下面。

在设置图像适配器之前执行此操作

if (diff == 1){
    gridSize = 16;
    grid.setNumColumns(4);
}

if (diff == 2){
    gridSize = 25;
    grid.setNumColumns(5);
}

if (diff == 3){
    gridSize = 36;
    grid.setNumColumns(6);
}
如果它不起作用,请告诉我

在获得'diff'和'rng'的值后设置适配器,如下所示:

grid = (GridView)findViewById(R.id.grid);
rng = new Random();

Bundle pack = this.getIntent().getExtras();
diff = pack.getInt("dif");

if (diff == 1){
    gridSize = 16;
    grid.setNumColumns(4);
}

if (diff == 2){
    gridSize = 25;
    grid.setNumColumns(5);
}

if (diff == 3){
    gridSize = 36;
    grid.setNumColumns(6);
}

grid.setAdapter(new ImageAdapter(this));