旋转图像视图属于单击时的RecyclerView



注意:我在写问题时解决了这个问题,所以不需要回答。仍然与答案分享这一点,以便有同样经历的人可以从中受益。

我有一个回收器视图,其中包含图像和2个文本视图。我想在点击时旋转图像,但发生了一些奇怪的事情:

有时,图像不会旋转。有时,我会看到一些图像被旋转,即使我没有点击它们。

onClickListener的代码:

arrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAnswer(getAdapterPosition(), arrow);
}
});

它正在调用的方法:

private void showAnswer(int adapterPosition, ImageView arrow){
Info info = infoList.get(adapterPosition);
info.setExpanded(!info.isExpanded());
if(!info.isExpanded()){
arrow.setRotation(90);
}
else{
arrow.setRotation(0);
}
notifyItemChanged(adapterPosition);
}

请注意,我还同时更改了其中一个textView的可见性,这非常好。

我在写问题的"我也更改了一个textViews的可见性"部分时发现了错误。我在哪里换的?onClickListener中没有。它在onBindViewHolder方法中。因此,从onClick中删除if-else语句并添加以下方法中的最后一行解决了我的问题:

@Override
public void onBindViewHolder(@NonNull RuleViewHolder holder, int position) {
Info info = infoList.get(position);
holder.questionTextView.setText(info.getQuestion());
holder.answerTextView.setText(info.getAnswer());
boolean isExpanded = infoList.get(position).isExpanded();
holder.expandableLayout.setVisibility(isExpanded ? View.VISIBLE : View.GONE);
holder.arrow.setRotation(isExpanded ? 90 : 0);
}

最新更新