android - 如何检索在 RecyclerView 适配器中单击的最后位置的 View ?

标签 android android-recyclerview

我有一个用于歌曲列表的 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
                }
            });
}

最佳答案

在您的适配器类中管理一个 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;
                }
            });

关于android - 如何检索在 RecyclerView 适配器中单击的最后位置的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587541/

相关文章:

android - 按像素垂直滚动 Android 中的 RecyclerView

android - 检索 GSM 网络信息 Android?

android - Gradle:创建lib.aar文件后如何执行任务?

java - 如何打开默认浏览器

java - Android:在 RecyclerView 中添加 View 时出现奇怪的 react

android - RecyclerView 中的 NetworkImageView 因回收而导致显示问题

android - cordova navigator.camera.getPicture 在 android 中不工作

Android 二维码扫描器库

java - 如何在Android应用程序中显示来自Google Drive的图像?

java - 如何在其适配器内的 recyclerview 元素之间移动