如何从服务类的特定位置动态更新Recyclerview项目?

时间:2019-05-22 17:52:14

标签: android kotlin service android-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"
            />

1 个答案:

答案 0 :(得分:0)

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

@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);
    }