2015-07-03 38 views
0

我想单击它时更改图像按钮的图像。这imageButton是布局输出文件的一部分,我已在我的自定义适配器中进行了充气,​​该适配器将一种卡片视图(带有几个按钮的图像)提供给我的主容器布局。无法从适配器内更新imageButton

我已经加入了ImageButton的听众在我CustomAdapter.java:

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); 
} 

但imagebutton不会更新新的图像。有人能帮我吗。

谢谢

回答

2

由于持卡人的变化(适配器getView()的一部分,最后持卡人将被调用,而这是拍了拍一个

请改变你的代码如下,然后再试一次:

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); 
    } 
}); 
+0

感谢您的回答。它为我工作。 – Sushil

0

这个工作对我来说

cardHolder.mLikeButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    cardHolder.mLikeButton.setImageResource(R.drawable.ic_heart_red); 
} 
}); 
+0

你能补充一些解释吗? –

+0

你的持有者类持有每个listView项目的按钮对象,当你改变持有人属性时,你的listView项目改变了,因为当你的convertView为null时,你调用'cardHolder.getTag()' –

+0

感谢您的回答。这对我不起作用。 – Sushil

0

setBackgroundResource(R.drawable.ic_heart_red);

或者以其他方式尝试,如果你点击它回来时,需要回到以前的形象:

您可以创建在绘制文件夹中的文件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) 
+0

感谢您的回答。这对我不起作用。 – Sushil

相关问题