java - 单击时旋转 ImageView 属于 RecyclerView

标签 java android animation android-recyclerview android-imageview

注意:我在编写问题时解决了问题,因此不需要答案。仍然与答案分享,以便有相同经历的人可以从中受益。

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

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

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 的可见性,效果非常好。

最佳答案

我在编写问题的“我还更改了其中一个 TextView 的可见性”部分时发现了错误。我哪里改了?不在 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);
}

关于java - 单击时旋转 ImageView 属于 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61545998/

相关文章:

css - 如何持久化css3动画变化

java - 生成唯一键以避免在 TreeMap 中覆盖

java - Spring Boot + React JS + Firebase 实时数据库

java - 如何在大型Java项目中查找静态方法调用?

python - 如何为 Python matplotlib.animation 添加随时间变化的标题?

.net - 在 winform 应用程序中模拟 ajax 加载器

Java Comparator reversed() 方法有奇怪的结果

java - Android - 空指针异常 : storage == null

android - 让 : Circular . .. 依赖项被删除

android - Android中有什么方法可以获取设备虚拟键盘的高度