访问listview中最后一次单击项目的图像

时间:2014-11-16 16:38:21

标签: android listview android-listview android-mediaplayer

下面是listview适配器的代码,它显示了track的列表。每个列表项都有播放和停止图标来播放和停止跟踪。当用户点击播放图像按钮时,它会变为暂停按钮图像并开始播放曲目。当我点击暂停按钮图像时,它变为播放按钮图像并且曲目停止播放。如果我单击另一个曲目播放图像按钮播放曲目,之前的曲目停止并且当前点击的曲目开始播放但问题是之前的曲目仍然显示暂停图标图像按钮,它应该更改为播放图像按钮,因为目前它没有播放。这是因为holder.img2 visiblity仍然是真的,因为我们从未改变图像的可见性(holder.img1是播放图标和holder.img2是为了我需要访问列表视图中最后一个单击项目的图像图标。如果我在播放当前时单击其他轨道播放按钮,我该怎么办才能将暂停图像按钮更改为播放图像按钮TRA CK ..

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

  • 每次position在全局变量lastPosition中保存onClick
  • 检查位置是否不是默认值,然后获取其相关的行,其图像,并根据需要设置其可见性。

    int lastPosition = -1;
    
    holder.img1.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(final View v)
        {
            if (lastPosition != -1)  {
                View lastRow = listView.getChildAt(lastPosition);
    
                ImageView play = (ImageView) lastRow.findViewById(R.id.play2);
                ImageView pause = (ImageView) lastRow.findViewById(R.id.pause);
                play.setVisibility(View.GONE);
                pause.setVisibility(View.VISIBLE);
            }
    
        .. //all other code of onClick for media player
        lastPosition = position;
        }
    }
    

希望它有所帮助。

答案 1 :(得分:0)

另一种方法是将最后点击的行ImageView直接保存到variable的{​​{1}}。

简单地将变量global声明为SoundCloudAdapter

SoundCloudAdapter

ImageView imgRowLastClicked;

对暂停holder.img1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { if(imgRowLastClicked!= null) { lastClickedimg= imgRowLastClicked; lastClickedimg.setVisibility(View.GONE); } //your other code imgRowLastClicked= (ImageView) v.findViewById(R.id.play2); } }

执行相同操作