Android 下面的代码中上下文指的是什么?

Android 下面的代码中上下文指的是什么?,android,Android,这是一个简单的画廊程序。我已经将代码裁剪为回答问题所需的必要部分。我的问题是为什么上下文没有初始化,然后如何知道下面代码中的上下文引用是什么 public class GalleryActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

这是一个简单的画廊程序。我已经将代码裁剪为回答问题所需的必要部分。我的问题是为什么上下文没有初始化,然后如何知道下面代码中的上下文引用是什么

public class GalleryActivity extends Activity { 

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);        
    gallery.setAdapter(new ImageAdapter(this));
    gallery.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View v,
        int position, long id)
        {
            myImageView.setImageResource(imageIDs[position]);
        }
    });
}

public class ImageAdapter extends BaseAdapter
{
    Context context;
    public ImageAdapter(Context c)
    {
        context = c;   
    }

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

        ImageView imageView = new ImageView(context);
        imageView.setImageResource(imageIDs[position]);
        return imageView;
    }
  }
}
公共类GalleryActivity扩展活动{
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gallery.setAdapter(新的ImageAdapter(本));
gallery.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id)
{
setImageResource(ImageId[position]);
}
});
}
公共类ImageAdapter扩展了BaseAdapter
{
语境;
公共图像适配器(上下文c)
{
上下文=c;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView ImageView=新的ImageView(上下文);
setImageResource(ImageId[position]);
返回图像视图;
}
}
}

未初始化
上下文
,因为在安装
ImageAdapter
类时,必须设置
上下文
,例如:

ImageAdapter myImageAdapter = new ImageAdapter(getApplicationContext());
然后在
ImageAdapter
类中,您将使用
上下文
变量:

  ImageView imageView = new ImageView(context);
在代码中,您有:

new ImageAdapter(this);
引用当前类别GalleryActivity。GalleryActivity是一个活动,是上下文的子类。因此,您正在使用上下文调用ImageAdapter构造函数。然后,在构造函数中存储对该上下文的引用,
Context=c
。实际上,
context
现在指向一个context,它是一个活动


您不需要显式实例化上下文,因为Android系统已经为您提供了一个有效的活动实例,而且由于活动是一种上下文类型,因此您拥有一个有效的上下文。

以前,了解什么是上下文可能会有所帮助。因此,您可能有兴趣阅读以下内容:在
getApplicationContext
函数之后添加缺少的
()
,因此在以下行中:ImageView ImageView=new ImageView(context);是否正在活动中构建ImageView?或者gallery?一旦GalleryActivity运行,就会设置
gallery
的图像适配器。然后根据库中显示的部分,将使用需要显示的视图调用getView。此时将创建图像视图,并将图像设置为该视图。您应该知道gallery属于gallery类型,也是AdapterView。网上有一些关于ListView的指南,可能会对您有所帮助