【发布时间】:2017-07-03 19:32:33
【问题描述】:
我的片段中有一个方法(目的是在单击后将 Listview 图像更改为另一个图像)。我在我的适配器中调用这个方法..现在当我点击那个 Imageview 时没有任何反应..当我再次点击它时它工作..(这个 Imageview 是一个播放和暂停按钮,所以当我点击它时将它转为播放图标我必须再次单击两次,依此类推...) ..
这是我在 Fragment 中的方法:
@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();
}
});
}
我在我的适配器中这样称呼它:
holder.playPause=(ImageView)v.findViewById(R.id.playPause);
holder.playPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (callback != null) {
callback.imageButtonOnClick(v, position);
}
}
});
这是我的接口和构造函数,也在我的适配器中:
public interface PlayPauseClick {
void imageButtonOnClick(View v, int position);
}
private PlayPauseClick callback;
public void setPlayPauseClickListener(PlayPauseClick listener) {
this.callback = listener;
}
我已经在我的 Fragment 中实现了这个接口
更新
产品类别:
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;
}
【问题讨论】:
-
我觉得你需要初始化
boolean paused; -
@SelimAjimi 你没有看到我的方法
-
能否给出Product类的代码?如果您没有按照@SelimAjimi 的建议进行特殊检查,产品可能会为已选择的资源返回相同的路径。
-
paused在哪里初始化?它在所有 imageViews 之间共享吗? -
@o.akrout 它在我创建方法的片段中:private boolean paused = true;
标签: android android-fragments methods interface android-adapter