【问题标题】:ImageView Toggle inside listview列表视图内的 ImageView 切换
【发布时间】:2017-03-04 11:50:22
【问题描述】:

我有一个铃声列表视图,每个铃声的每一行都有一个播放图像视图..

这是它的视图..

现在很明显,当用户点击播放按钮时,它应该切换到暂停按钮。我已经实现了这一点,到目前为止一切都很好..

现在我有一个问题:

我不知道如何跟踪当前播放的行,我的意思是如果用户想要播放另一行的歌曲,首先我必须更改当前暂停切换播放,然后播放新的。

你能帮我解决这个问题吗!?

接口(在适配器中)

       public interface PlayPauseClick {
         void playPauseOnClick(int position);
        }
   private PlayPauseClick callback;
   public void setPlayPauseClickListener(PlayPauseClick listener) {
        this.callback = listener;
    }

适配器(在 getView 中)

    Product product = (Product) mDataItems.get(position);
    holder.playPause=(ImageView)v.findViewById(R.id.playPause); 
    holder.playPause.setImageResource(product.getPlayPauseId());
    holder.playPause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              if (callback != null) {
                  callback.playPauseOnClick(position);
              }      
        }
    });

活动

    @Override
public void playPauseOnClick(int position) {
    final Product product = productList.get(position);
                if (product.paused) {
                    product.setPlayPauseId(R.drawable.ic_pause);
                    product.paused=false;
                }else {
                    product.setPlayPauseId(R.drawable.ic_play);
                    product.paused = true;
                }
                adapter.notifyDataSetChanged();     
    };

【问题讨论】:

    标签: android listview interface adapter


    【解决方案1】:

    您可以将当前正在播放的歌曲的索引存储在适配器中。

    所以你只需要在点击其他按钮时打开暂停。

    在适配器中:

    int currentPosition = -1;
    ...
    if (callback != null) {
      callback.playPauseOnClick(position);
      if (currentPosition == -1){
           currentPosition = position;
      } else if (currentPosition == position){
           currentPosition = -1;
      } else if (currentPosition != -1 && currentPosition != position){
           callback.playPauseOnClick(currentPosition);
           currentPosition = position;
      }
    } 
    

    【讨论】:

    • 接近答案了,但是一旦播放按钮点击暂停按钮,它就不会再次切换回播放按钮..
    • 你知道如何解决这个问题吗!?我会接受并投票支持你的答案..
    • 我刚刚编辑了我的帖子。当 currentPosition 为 -1 时,没有一个按钮在播放。
    • 我不明白。第一个问题是什么?
    • 我问的主要问题..如果用户点击第二行播放新歌,上一个图标将保留在暂停图标中
    【解决方案2】:

    Adapter方法中创建

    public void update (ArrayList<Product> productList) {
      this.productList.clear();
      this.productList.addAll(productList);
      notifyDataSetChanged();  
    }
    

    playPauseOnClick中的调用方法

    adapter.update(productList);
    

    【讨论】:

      【解决方案3】:

      这是一个解决方案:

      在您的活动中创建一个类字段private Product mCurrentProduct;

      然后:

      @Override
      public void playPauseOnClick(int position) {
          final Product product = productList.get(position);
      
                      if (mCurrentProduct == null) {
                          mCurrentProduct = product)
                      } 
      
                      if (mCurrentProduct == product) {
                          if (product.paused) {
                             product.setPlayPauseId(R.drawable.ic_pause);
                             product.paused=false;
                          }else {
                             product.setPlayPauseId(R.drawable.ic_play);
                             product.paused = true;
                          }
                      } else {
                          if (!mCurrentProduct.paused) {
                             product.setPlayPauseId(R.drawable.ic_play);
                             product.paused = true;
                          }
      
                          product.setPlayPauseId(R.drawable.ic_pause);
                          product.paused=false;
      
                          mCurrentProduct = product;
                      }
      
                      adapter.notifyDataSetChanged();     
          };
      

      希望这会有所帮助。

      对不起,我的英语不好。

      【讨论】:

        猜你喜欢
        • 2017-07-24
        • 1970-01-01
        • 2017-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多