我想在点击它时更改图像按钮的图像。这个imageButton是布局输出文件的一部分,我在我的自定义适配器中充气,它将一种卡片视图(带有几个按钮的图像)提供给我的主容器布局。
我在CustomAdapter.java中添加了imagebutton监听器:
cardHolder.mLikeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Sushil", "clicked like button!!!!!");
updateHeartButton(true);
}
});
当我点击按钮时,我的监听器被调用,并从内部调用一个方法来更新按钮的图像:
private void updateHeartButton(boolean animated) {
cardHolder.mLikeButton.setImageResource(R.drawable.ic_heart_red);
}
但是图像按钮没有更新新图像。有人可以帮助我。
谢谢
答案 0 :(得分:2)
由于cardHolder发生变化(适配器getView()
的一部分),将调用最后一个cardHolder,而不是被调用的那个。
请按照以下方式更改您的代码,然后重试:
cardHolder.mLikeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("Sushil", "clicked like button!!!!!");
((ImageButton) view).setImageResource(R.drawable.ic_heart_red);
}
});
答案 1 :(得分:0)
这项工作对我来说
cardHolder.mLikeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cardHolder.mLikeButton.setImageResource(R.drawable.ic_heart_red);
}
});
答案 2 :(得分:0)
尝试使用setBackgroundResource(R.drawable.ic_heart_red);
或以其他方式,如果您需要在点击它时返回上一张图片:
您可以在drawable文件夹中创建一个btn.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- When selected, use grey -->
<item android:drawable="@drawable/like_selected"
android:state_selected="true" />
<!-- When not selected, use white-->
<item android:drawable="@drawable/like_normal"/>
</selector>
在按钮的xml中,将此xml设置为背景:
android:background="@drawable/btn"
在updateHeartButton()方法中,您可以使用:
cardHolder.mLikeButton.setSelected(true)