无法从内部适配器更新 imageButton
Cannot update imageButton from inside adapter
我想在点击 imagebutton 时更改它的图像。这个 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);
}
但是图像按钮没有更新为新图像。谁能帮帮我。
谢谢
由于 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);
}
});
这对我有用
cardHolder.mLikeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cardHolder.mLikeButton.setImageResource(R.drawable.ic_heart_red);
}
});
试试 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)
我想在点击 imagebutton 时更改它的图像。这个 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);
}
但是图像按钮没有更新为新图像。谁能帮帮我。
谢谢
由于 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);
}
});
这对我有用
cardHolder.mLikeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cardHolder.mLikeButton.setImageResource(R.drawable.ic_heart_red);
}
});
试试 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)