android-从库中获取资源id
因此,我有一个带有android-从库中获取资源id,android,resources,gallery,drawable,Android,Resources,Gallery,Drawable,因此,我有一个带有图库(由参考资料文件夹中的图片制作)的程序,一个按钮和一个图像视图 我想从库中选择一个图像,按下按钮,然后更改ImageView位图以显示从库中选择的图像 我有从一个活动到另一个活动的改变方法都是固定的。。。但是我只是在获取拾取的图像的id时遇到了问题,整数,可绘制,长字符串。。。或者不管它有什么帮助 代码如下: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(save
图库
(由参考资料文件夹中的图片制作)的程序,一个按钮和一个图像视图
我想从库中选择一个图像,按下按钮,然后更改ImageView
位图以显示从库中选择的图像
我有从一个活动到另一个活动的改变方法都是固定的。。。但是我只是在获取拾取的图像的id时遇到了问题,整数,可绘制,长字符串。。。或者不管它有什么帮助
代码如下:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery);
Gallery g = (Gallery) findViewById(R.id.gallery);
g.setAdapter(new ImageAdapter(this));
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
//CODE TO KNOW IF PICKED THE 1ST OR 2ND IMAGE
//Toast.makeText(Galeria.this, v.getId() + "", Toast.LENGTH_SHORT).show();
//Toast.makeText(Galeria.this, parent.getItemIdAtPosition(position) + "", Toast.LENGTH_SHORT).show();
//Toast.makeText(Galeria.this, id + "", Toast.LENGTH_SHORT).show();
}
});
}
public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;
private Integer[] mImageId = {
R.drawable.image1, //first image
R.drawable.image2, //second image
};
public ImageAdapter(Context c) {
mContext = c;
TypedArray a = c.obtainStyledAttributes(R.styleable.Gallery1);
mGalleryItemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);
a.recycle();
}
public int getCount()
return mImageId.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(mContext);
i.setImageResource(mImageId[position]);
i.setLayoutParams(new Gallery.LayoutParams(400, 225));
i.setScaleType(ImageView.ScaleType.FIT_XY);
i.setBackgroundResource(mGalleryItemBackground);
return i;
}
}
OnItemClick
void上的三个祝酒词是我试图显示id的。。。但仅显示画廊中图像的位置
还有其他解决办法吗?我读了一些关于动态ID的东西。。。但我能很好地理解
我应该把代码放在哪里才能得到我想要的id
有什么帮助吗?谢谢
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
//CODE TO KNOW IF PICKED THE 1ST OR 2ND IMAGE
int imageId = (Integer) (parent.getItemAtPosition(position));
myImageView.setImageResource(imageId);
//Toast.makeText(Galeria.this, v.getId() + "", Toast.LENGTH_SHORT).show();
//Toast.makeText(Galeria.this, parent.getItemIdAtPosition(position) + "", Toast.LENGTH_SHORT).show();
//Toast.makeText(Galeria.this, id + "", Toast.LENGTH_SHORT).show();
}
});
在适配器中,getItem应返回数据集的对象
public Object getItem(int position) {
return (mImageId[position]);
}
您可以执行类似操作,将
图像视图
资源
作为可绘制
显示在项目ClickListener
上:
(ImageView)view.getBackground()
这将返回所选图像视图资源的可绘制图像。我喜欢您的解决方案,谢谢!但是我在这一行得到了这个错误:
intimageid=((ImageAdapter)parent.getItem(position)代码>此行有多个标记-类型不匹配:无法从Object转换为int-无法从AdapterView转换为Galeria.ImageAdapter即使尝试解决类型不匹配问题,我仍然会遇到第二个错误我不明白将获取-无法从AdapterView转换为Galeria.ImageAdapteruse直接父级。getItemAtPosition(position)。我编辑了答案