当前位置: 代码迷 >> Android >> LayoutInflater对象的创造
  详细解决方案

LayoutInflater对象的创造

热度:71   发布时间:2016-05-01 13:29:25.0
LayoutInflater对象的创建
我先把代码贴上来
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()
*/


急求解答!!!

------解决方案--------------------
探讨
我先把代码贴上来
Java code
public class GridViewActivity2 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout……