2015-07-03 45 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

相關問題