首页 > 解决方案 > 如何检索在 RecyclerViewAdapter 中单击的最后一个位置的视图?

问题描述

我有一个RecyclerViewAdapter歌曲列表类,当我触摸一首歌时,那首歌的背景变成蓝色。问题是如果我尝试触摸另一首歌曲,那首歌曲也会变成蓝色,但我无法找到解决方案来更改列表中之前触摸的歌曲以更改CardView 背面,这样一次只有一个项目会变成蓝色在任何给定的触摸。

内 :

public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {


            final ViewHolder viewHolder = (ViewHolder) holder;

            viewHolder.setImageResourceType(mList, position);
            viewHolder.getTxtViewTitle().setText(mList.get(position).getTitle());
            viewHolder.getTxtViewArtist().setText(mList.get(position).getArtist());
            viewHolder.getTxtViewDuration().setText(MusicUtil.GetDurationHMS(mList.get(position).getDuration()));
            viewHolder.getCardView().setCardBackgroundColor(Color.argb(0, 0, 0, 0));


            viewHolder.getCardView().setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    mListener.onRecyclerViewItemClicked(viewHolder, position, view.getId());

                    viewHolder.getCardView().setCardBackgroundColor(Color.BLUE);

                    mLastPosition = position; // To be used to store last position clicked
                }
            });
}

标签: androidandroid-recyclerview

解决方案


管理lastHolder适配器类中的全局变量。

viewHolder.getCardView().setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    mListener.onRecyclerViewItemClicked(viewHolder, position, view.getId());

                    viewHolder.getCardView().setCardBackgroundColor(Color.BLUE);

                    mLastPosition = position; // To be used to store last position clicked
                    if(lastHolder!=null)
                     {
                        // do your task here which you want to do for previous selection


         lastHolder.getCardView().setCardBackgroundColor(Color.WHITE);
                     }
                     lastHolder=viewHolder;
                }
            });

推荐阅读