gpt4 book ai didi

Android:Recycler View 的 UI 在项目点击时不会改变?

转载 作者:行者123 更新时间:2023-11-29 22:55:34 26 4
gpt4 key购买 nike

我试图在单击该项目时更改回收站 View 项目的背景。数据实际上发生了变化,但 UI 没有。我尝试了很多尝试不同的方法,但没有任何效果。虽然我正在调用 notifyItemChanged() 但它没有用。

任何让这个东西工作的解决方案都会非常有帮助。

**我的代码:**

@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));
notifyItemChanged(viewHolder.getAdapterPosition());

Toast.makeText(context, ""+viewHolder.getAdapterPosition(), Toast.LENGTH_SHORT).show();
}
});

}

}

最佳答案

最后我设法找到了我自己的问题的答案和没有改变 UI 的根本原因。

错误:

我实际上是在 onBindViewHolder(...) 方法中设置点击监听器。

解决方案:

如果你想在尝试更新点击事件的回收 View 时避免 notifyItemChanged(position) 和其他东西,那么你应该在 viewHolder 类中设置点击监听器而不是 onBindViewHolder

附言:应用此更改对我来说效果很好。@Blind Kai 的解决方案也有效,但需要刷新 View 。我很确定这个更简单、更高效。不过我很感谢他的努力。

关于Android:Recycler View 的 UI 在项目点击时不会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57442184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com