I have audio player layout as an item in recycler view . I want the play icon to change into pause icon on icon clicked . The log shows that icon has been set but the icon doesn't change in appearance in recycler view .
My code:
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
customNoteView = notesList.get(i);
notesText = viewHolder.notesWriteArea;
notesImage = viewHolder.notesImage;
notesAudio = viewHolder.notesAudio;
notesAudioPlayButton = viewHolder.notesAudioPlayButton;
notesAudioSeekBar = viewHolder.notesAudioSeekBar;
notesAudioDeleteButton = viewHolder.notesAudioDeleteButton;
if(customNoteView.getNoteText()!=null){
editTextList.add(notesText);
notesText.setVisibility(View.VISIBLE);
notesImage.setVisibility(View.GONE);
notesAudio.setVisibility(View.GONE);
notesText.requestFocus();
focussedEditText = notesText;
notesText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(b){
focussedEditText = ((CustomEditText)view);
//Toast.makeText(context, ((CustomEditText) view).getText().toString(), Toast.LENGTH_SHORT).show();
}
}
});
}
else if(customNoteView.getImageUri()!=0){
notesImage.setVisibility(View.VISIBLE);
notesText.setVisibility(View.GONE);
notesAudio.setVisibility(View.GONE);
Glide.with(notesImage.getContext())
.load(notesImage.getContext().getDrawable(customNoteView.getImageUri()))
.into(notesImage);
notesImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, FullScreen.class);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context,
notesImage,
ViewCompat.getTransitionName(notesImage)
);
context.startActivity(intent, options.toBundle());
}
});
}
else if(customNoteView.getAudioUri()!=null){
notesAudio.setVisibility(View.VISIBLE);
notesImage.setVisibility(View.GONE);
notesText.setVisibility(View.GONE);
notesAudioPlayButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
notesAudioPlayButton.setBackground(context.getDrawable(R.drawable.ic_pause));
notesAudio.setBackground(context.getDrawable(R.drawable.gray_rectangular_background));
Adapter.this.notifyItemChanged(viewHolder.getAdapterPosition());
Toast.makeText(context, ""+viewHolder.getAdapterPosition(), Toast.LENGTH_SHORT).show();
}
});
}
}
I actually have a linear layout for audio item. I'm setting onClickListener() no an ImageButton to change it's background from play to pause.
Extra information:
I have observed that clicking the icon first time doesn't do anything .
Clicking it second time changes it to pause icon but then it quickly turns back to play icon .
Clicking it third time changes it to pause icon .
Any suggestion to get this working be great !