我先把代码贴上来
- Java code
public class GridViewActivity2 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridview2); GridView gridview = (GridView) findViewById(R.id.gridview1gridview); gridview.setBackgroundResource(R.drawable.bg); gridview.setAdapter(new ImageAdapter2(this)); gridview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Toast.makeText(GridViewActivity2.this, "你选择了" + (position + 1) + " 号图片", Toast.LENGTH_SHORT) .show(); } }); } }class ImageAdapter2 extends BaseAdapter { private Context mContext; private Integer[] mImageIds = { R.drawable.android1, R.drawable.android2, R.drawable.android3, R.drawable.android4, R.drawable.ic_launcher, R.drawable.computer, R.drawable.vs, R.drawable.gc, R.drawable.eclipse, R.drawable.pdf, R.drawable.word, R.drawable.war, R.drawable.net }; public ImageAdapter2(Context c) { mContext = c; } public int getCount() { return mImageIds.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = null; TextView textView = null; if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(new GridViewActivity2()); convertView = (View) inflater.inflate(R.layout.griditem2, null); } imageView = (ImageView) convertView .findViewById(R.id.griditem2imageview); textView = (TextView) convertView .findViewById(R.id.griditem2textview); imageView.setImageResource(mImageIds[position]); imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); textView.setText("title"); return convertView; }}
①
//如果我把ImageAdapter2作为内部类写在Activity中,就一切OK。如下
//LayoutInflater inflater = (LayoutInflater) GridViewActivity2.this.getLayoutInflater();
②
//如果ImageAdapter2不作为内部类,而是作为另外的一个独立的类,我用new的方式生成LayoutInflater对象却报错了
//LayoutInflater inflater = (LayoutInflater)new GridViewActivity2().getLayoutInflater();
/*
错误信息
java.lang.NullPinterException
at android.app.Activity.getLayoutInflater(Activity.java:2769)
at my.android.activity.ImageAdapter2.getView(GridViewActivity2.java:75)
*/
③
//如果ImageAdapter2不作为内部类,而是作为另外的一个独立的类,我用from这个方法生成LayoutInflater对象也报错了
//LayoutInflater inflater = LayoutInflater.from(new GridViewActivity2());
/*
错误信息
java.lang.IllegalStateException: System services not available to Activities before onCreate()
*/
急求解答!!!
------解决方案--------------------