У меня есть метод в моем фрагменте (с целью изменения изображения Listview на другое изображение после нажатия). Я вызываю этот метод в своем адаптере. Теперь, когда я нажимаю на этот Imageview, ничего не происходит. Когда я нажимаю его снова, он работает. (Это изображение является кнопкой «Воспроизведение и пауза», поэтому, когда я нажимаю на него, чтобы включить его в Play значок Я должен снова и так далее Нажмите два раза ...) ..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();
}
});
}
Я называю это так в моем адаптере:
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;
}
Я реализовал этот интерфейс в моем фрагменте
Update
Класс продукта:
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;
}
Я думаю, вам нужно инициализировать ialize 'boolean pauseed;' –
@SelimAjimi вы не видели мой метод –
Можете ли вы дать код класса Product? Продукт может возвращать тот же путь для уже выбранного ресурса, если вы не сделали специальной проверки там, как предлагает @SelimAjimi. – rencsaridogan