我在我的Fragment中有一個方法(目的是在單擊後將Listview圖像更改爲另一個圖像)。我在我的適配器中調用此方法..現在,當我單擊Imageview時沒有任何反應..當我再次單擊它時它工作..(此Imageview是播放和暫停按鈕,所以當我單擊它時將其變爲播放圖標我得再等等點擊兩次......)ImageView在兩次點擊後更改圖像
這是我在我的片段方法:
@Override
public void imageButtonOnClick(View v, int position) {
playPause=(ImageView)v.findViewById(R.id.playPause);
Product m = productList.get(position);
playPause.setImageResource(m.getPlayPauseId());
playPause.setTag(position);
playPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = (Integer) v.getTag();
Product m =(Product) productList.get(pos);
if (paused) {
m.setPlayPauseId(R.drawable.ic_pause);
paused=false;
}else {
m.setPlayPauseId(R.drawable.ic_play);
paused = true;
}
adapter.notifyDataSetChanged();
}
});
}
我這樣調用它在我的適配器:
這是我的接口和構造函數,它也在我的適配器中:
public interface PlayPauseClick {
void imageButtonOnClick(View v, int position);
}
private PlayPauseClick callback;
public void setPlayPauseClickListener(PlayPauseClick listener) {
this.callback = listener;
}
我實現了這個接口在我的片段
更新
產品類:
public class Product implements Serializable {
@SerializedName("pid")
public int pid;
@SerializedName("name")
public String name;
@SerializedName("qty")
public int qty;
@SerializedName("price")
public String description;
@SerializedName("image_url")
public String image_url;
@SerializedName("date")
public String date;
private int PlayPauseId;
public int getPlayPauseId() {
return PlayPauseId;
}
public void setPlayPauseId(int playPauseId) {
PlayPauseId = playPauseId;
}
我想你需要init ialize'boolean paused;' –
@SelimAjimi你沒有看到我的方法 –
你可以給類產品的代碼?如果您沒有在@SelimAjimi建議的地方進行特殊檢查,那麼產品可能會爲已選資源返回相同的路徑。 – rencsaridogan