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的指南,可能会对您有所帮助