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

问题描述 投票:0回答:1

注:我在写问题的时候解决了这个问题,所以不需要回答。还是把这个问题和答案一起分享,让有同样经历的人能够从中受益。

我有一个回收器视图,其中包含图像和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);
}

请注意,我也同时改变了我的一个文本视图的可见性,效果非常好。

java android animation android-recyclerview android-imageview
1个回答
0
投票

我在写问题的 "我也改变了我的一个textViews的可见性 "部分的时候发现了自己的错误。我是在哪里改的呢?不是在onClickListener里,而是在onBindView里。而是在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);
}
© www.soinside.com 2019 - 2024. All rights reserved.