Po prostu wykonując proste ćwiczenie, ustawiając adapter w GridView:
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
ImageAdapter to kolejna klasa, następująca:
public class ImageAdapter extends BaseAdapter {
// ---the images to display---
public Integer[] imageIDs = { R.drawable.one, R.drawable.two,
R.drawable.three, R.drawable.four, R.drawable.five,
R.drawable.six };
private Context context;
public ImageAdapter(Context c) {
context = c;
}
// ---returns the number of images---
public int getCount() {
return imageIDs.length;
}
// ---returns the ID of an item---
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
// ---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(185, 200));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5, 20, 5, 5);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(imageIDs[position]);
return imageView;
}
}
Podczas debugowania kodu aplikacja ulega awarii w wierszu gridview.setAdapter i zgłasza błąd java.lang.NullPointerException na to. Wszelkie pomysły, jak można to przezwyciężyć?
Odpowiedzi:
3 dla odpowiedzi № 1Myślę, że twoim problemem nie jest fakt this
jest zerowy, co nie ma sensu, ale to gridView
ma wartość null.
Zwykle dzieje się tak z powodu:
- Nie zadzwoniłeś
setContentView()
przedfindViewById
. findViewById
jest wywoływany z niewłaściwym identyfikatorem.
0 dla odpowiedzi nr 2
Może to pomóc:
Context context = getApplicationContext();
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(context));
0 dla odpowiedzi № 3
Posługiwać się
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(ClassName.this));
gdzie ClassName to nazwa klasy, która rozszerza działanie Androida.