我有音频播放器布局作为一个项目在回收器视图。我想播放图标改变为暂停图标在图标点击。日志显示图标已经设置,但图标在回收器视图中的外观没有改变。
我的代码:
@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()no一个ImageButton来将其背景从play更改为pause。
额外信息:
我观察到第一次点击图标并没有什么作用。
第二次点击它会将它改变为暂停图标,但它会迅速返回到播放图标。
第三次点击它就会变成暂停图标。
任何建议,使这工作是伟大的!
是否执行适配器中显示的代码?如果是这样,为什么不调用notifyItemChanged(position)?如果不是,为什么不在适配器中创建用position参数更新视图的方法,并从Activity或fragment调用它呢?
然后,在每个@test方法中,我调用activitytestrule.launchactivity(Intent.action_main)),然后进行单击。我发现,只有第一次点击不起作用,但第二次和第三次点击起作用。那么,这种行为的原因又能是什么呢?
在这里我有项目的列表在回收器视图这是取自Firebase.所以我试图改变其背景颜色当用户点击它.但是当我点击项目1然后项目4背景颜色也得到改变.如果点击项目2然后项目8颜色也.它给不恰当的结果。 视图持有者类
如果用户点击一个,我希望它做一些事情,也为两个和三个。我如何实现这一点?
我正面临一个奇怪的错误,其中recyclerview只显示了一个项目。下面是我的recyclerview适配器的代码: 我已经在其他应用程序中使用了这段代码,它的工作非常完美。我已经检查了聊天数据,这也是完美的。 这里是指向git repo布局文件的链接:布局文件
null 这是我在开始方法的主要活动,在这个方法中,我正在从firebase在回收器视图中显示数据,也在单击listener这里设置,请检查 并检查模型类