首页 > 解决方案 > 如何在服务类的特定位置动态更新recyclerview项目?

问题描述

我在回收站视图中有一个动画项目我正在尝试将它的可见性设置为从服务中可见和不可见,因为我已经成功创建了方法并且回收站视图正在被操纵但这里的主要问题是当我点击第一个回收站查看项目说在位置 1 我将我的动画视图的可见性设置为可见但是如果我单击另一个项目集 5 那么该项目的可见性将被正确设置但是我想让上一个单击的项目不可见我怎么能去做?

这是我在点击时设置可见性时的代码:

holder.itemView.setOnClickListener(View.OnClickListener {
                   holder.playanim.visibility = View.VISIBLE
        })

这是我的 xml 项目:

 <com.airbnb.lottie.LottieAnimationView
            android:id="@+id/playinganim"
            android:layout_marginTop="5dp"
            android:layout_width="45dp"
            android:layout_weight="20"
            android:visibility="invisible"
            app:lottie_autoPlay="true"
            app:lottie_loop="true"
            app:lottie_fileName="playing.json"
            android:layout_toRightOf="@id/sname"
            android:layout_height="45dp"
            />

标签: androidkotlinserviceandroid-recyclerview

解决方案


您需要添加一些额外的逻辑。使用变量存储最后点击位置,并检查当前项目位置是否等于最后检查位置。

@Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        holder.yourView.setVisibility(position == lastCheckedPosition ? View.VISIBLE : View.INVISIBLE);
        holder.yourView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                holder.yourView.setVisibility(View.VISIBLE);
                notifyItemChanged(lastCheckedPosition);
                lastCheckedPosition = position;
            }
        });
        super.onBindViewHolder(holder, position);
    }

推荐阅读