使用Hello,World Gridview教程示例,我试图在单击时使图像全屏,而不是在数组中显示图像的位置.由于我对Android不熟悉,这是我第一次尝试使用它,我很茫然.我虽然熟悉Java,但我尝试过这样的事情(显然不起作用):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
showImage(v, position);
Toast.makeText(HelloAndroid.this, "" + parent.getId(), Toast.LENGTH_SHORT).show();
}
});
}
private void showImage(View view, int position) {
ImageView imgView = (ImageView) view;
imgView.setImageResource(position);
}
Run Code Online (Sandbox Code Playgroud)
但应用程序崩溃(强制关闭).有任何想法吗?
Hak*_*bay 23
imgView.setImageResource(position);
Run Code Online (Sandbox Code Playgroud)
这会给您一个错误,因为您没有正确使用它.该参数应该指向图像的资源ID(例如,int)R.id.imageid.即使您要提供正确的资源ID,您想要做的也不会有效.
要获取正确的资源ID,您需要调用视图的适配器并使用该getItemId(position)方法来获取正确的资源ID.在ImageAdapter中,如果您将getItemId()方法更改为返回mThumbsIds[position]而不是0(如Google的示例中所示).
但是,为了达到你的结果,我建议你创建一个新的Activity,然后加载这样的图像.
例如:
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
long imageId = (ImageAdapter)parent.getAdapter.getItemAt(position);
Intent fullScreenIntent = new Intent(v.getContext(), FullScreenImage.class);
fullScreenIntent.putExtra(thisClassName.class.getName(), imageId);
thisClassName.this.startActivity(fullScreenIntent);
}
});
Run Code Online (Sandbox Code Playgroud)
假设您创建了一个full_image.xml布局文件,其中只包含一个ID为的ImageView "fullImage",您的FullScreenImage类应如下所示:
public class FullScreenImage extends Activity
{
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.full_image);
Intent intent = getIntent();
long imageId = intent.getExtras().get(thisClassName.class.getName());
ImageView imageView = (ImageView) v.findViewById(R.id.fullImage);
imageView.setLayoutParams( new ViewGroup.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT));
imageView.setImageResource(imageId);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
}
}
Run Code Online (Sandbox Code Playgroud)
这些方面的东西应该适合你,有些调整.确保在AndroidManifest.xml文件中添加FullScreenImage <activity>.