嗨我正在尝试设置一个检查,看看当前设置的图片是否为x,如果它是x,那么如果它还有其他东西,它会做其他事情。
Button sharebtn = (Button)findViewById(R.id.Sharebtn);
sharebtn.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
ImageView picture = (ImageView) findViewById(R.id.BTN);
if (picture.equals(R.drawable.x)){
//do really cool stuff
}else if (picture.equals(R.drawable.y){
//do stuff
}
}
});
使用此代码,按钮只会冻结,不会执行任何操作。它不仅仅显示焦点。
编辑:更多信息 代码用于收藏夹图标。因此,如果用户位于被标记为收藏的页面上,我希望该图标为填充星形,否则为空星形。我遇到的问题是我希望他们能够点击开始执行将页面添加到favs或删除它的代码。我认为最简单的方法是检查当前图标在oncreate中的设置。该图标正常工作,因此它将显示填充如果一个fav和viseversa然而代码,以使其删除或添加到favs(上面的代码片段)不起作用。我也试过了:
ImageView picture = (ImageView) findViewById(R.id.favsBTN);
java.io.File file = new java.io.File(persistentCarsDir+"/"+vin);
if (file.exists()) {
removefavorite();
picture.setImageResource(R.drawable.nostar);
}else if(!file.exists()){
favorite();
picture.setImageResource(R.drawable.star);
}
上面的代码工作^我只是文件路径错误:)
答案 0 :(得分:1)
在您的代码中,您正在将imageview与整数进行比较,这将无效。
要获得ImageView的drawable,您应该调用getDrawable。并获取资源ID的实际drawable调用getResources()。getDrawable(R.drawable.x)...
但afaik没有办法比较drawables ...... 最简单的方法可能是使用setTag方法进行imageview。因此,每当您更改其drawable时,您都可以将其标记设置为“X”或“Y”
然后检查标签并决定做什么......
编辑: 或者您使用复选框而不是imageview。您只需选中“isChecked”即可查看是否已选中或未选中。 您可以使用“setButtonDrawable”更改复选框的图形以使用您的星标。 如果你不想在填充和未填充的星之间手动切换,请使用一个有状态的drawable,你可以将填充的星号用于“已选中”,而未填充的星则用于未选中...
希望这会有所帮助...
答案 1 :(得分:1)
我认为View.setTag()是您想要做的。在ListAdapter中,为列表创建View对象。
public View getView(int position, View convertView, ViewGroup parent) {
View view = < create view here >;
Object imageLocator = < Enough information to locate the image later >
view.setTag(imageLocator);
return view;
}
然后在onClickListener
public void onClick(View view)
{
Object imageLocator = view.getTag();
if (imageLocator != null) {
// use imageLocator info to find the image
// do your really cool stuff
} else {
// just do other stuff
}
}
答案 2 :(得分:0)
这不是这样做的好方法,因为你试图将ImageView与int进行比较(R.drawable.x实际上是一个int)。所以这两个对象永远不会是平等的。您无法将ImageView与drawable进行比较,因为没有相同的对象。 也许您可以更精确地使用上下文,以便我们可以尝试为您的问题提供解决方案?
答案 3 :(得分:0)
R.drawable.x和R.drawable.y是整数,你将它们与一个总是返回false的ImageView进行比较。
您必须将drawable和ImageView转换为同一个对象,然后进行比较。