android - 回收站视图的项目背景不会在点击事件上更新?
问题描述
我将音频播放器布局作为回收站视图中的一个项目。我希望播放图标在单击图标时变为暂停图标。日志显示图标已设置,但图标在回收站视图中的外观没有改变。
我的代码:
@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();
}
});
}
}
我实际上有音频项目的线性布局。我正在设置 onClickListener() 没有 ImageButton 以将其背景从播放更改为暂停。
额外的信息:
我观察到第一次单击该图标没有任何作用。
第二次单击它会将其更改为暂停图标,但随后它会迅速返回播放图标。
第三次单击它会将其更改为暂停图标。
任何让这个工作的建议都很棒!
解决方案
你执行你在适配器中显示的代码吗?如果是这样,为什么不调用 notifyItemChanged(position)?如果没有,为什么不在 Adapter 中创建使用 position 参数更新视图并从 Activity 或 Fragment 调用它的方法?
推荐阅读
- php - PHP curl 显示 URL 的输出,例如“HTTP/1.1 200 OK”
- vba - 如何自动编号 Excel 列中的名称组?
- macos - 修复 High Sierra 上的 Home Brew 权限
- html - 有一个与兄弟图像高度相同的 div
- python - Django:导入@wraps时的AppRegistryNotReady
- build - 如何将变量用于选项 (DropDown) 参数?
- ios - UIImagePicker 控制器即使使用 plist 条目也不会请求权限
- laravel - 我认为我的代码有问题?
- java - ElasticSearch java列出字段的唯一值
- php - 如何在指定时间自动清空表