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