如何解决Android:如何比较具有R.drawable.imagename的图像资源?
| 我正在研究一个示例应用程序,在该应用程序中,我需要在onClick侦听器中获取图像视图的资源,并将其与我知道的图像源进行比较。如果资源相同,我想启动另一个意图。我现在面临的问题是访问该ImageView(及其资源ID整数)以与可绘制资源进行比较。@Override
// should int be final ??
public View getView(final int position,View convertView,ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it\'s not recycled,initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85,85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8,8,8);
} else {
imageView = (ImageView) convertView;
}
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// This is not working and I need to find a way to solve this >>
if (((ImageView)v).getResources().getInteger(0) == R.drawable.imageToCompare)
{
// do nothing
}
else
{
// do something
}
解决方法
您无法从
ImageView
获得可绘制ID。但是,如果您通过代码进行设置,则也可以将其存储在某个地方,例如在标签字段中。看看类似的问题:谁比较背景图像资源TextView和R.drawable.bg_image进行切换。
, if(((ImageView)v).getDrawable().getConstantState() == MainActivity.this
.getResources().getDrawable(R.drawable.unlock)
.getConstantState()))
{
// Do Something
}
, 正确的方法是使用用户setTag()
和getTag
。我想您正在制作自己的适配器。
在方法public View getView(int position,View convertView,ViewGroup parent)
中,当向其添加其他属性时,将标记设置为Imageview
。
ImageView temp = (ImageView) v.findViewById(resId);
temp.setImageResource(icon);
temp.setTag(icon); //drawable unique ID will be my identifier here
然后在onClick
中,您只需将View v
与drawable
ID进行比较即可。例如,我想在点击时更改图片,并以此方式进行编码。注意设置新的可绘制对象时我也如何更改标签
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if ((Integer)v.getTag() == R.drawable.current_img) {
v.setBackgroundResource(R.drawable.new_img);
v.setTag(R.drawable.new_img);
}
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。