繁体   English   中英

旋转图像视图在点击时属于 RecyclerView

[英]Rotating image view belongs to a RecyclerView on click

注意:我在写问题时解决了这个问题,所以不需要答案。 仍然与答案共享此内容,以便遇到相同问题的人可以从中受益。

我有一个包含图像和 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);
}

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

我在写问题的“我也改变了我的一个 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM