【问题标题】:Clickable ImageButton in RecyclerViewRecyclerView 中的可点击 ImageButton
【发布时间】:2020-01-28 12:06:53
【问题描述】:

我有一个 ImageButton,例如这个图标 。我想要当我点击它时,它会像 this 并且当我再次点击它会像图 1。我应该在代码中添加什么?这些 ImageButtons 在 RecyclerView 中。

【问题讨论】:

    标签: android imagebutton clickable


    【解决方案1】:

    在 OnBindView() 内部。

       boolean beforeClicked =false;
    
       holder.imageView.setOnClickLisnter(new OnClickListner(){
    
           if(!beforeClicked){
              holder.imageView.setDrawableResource(R.layout.whiteHeart);
              beforeClicked = true; 
           }
    
           else{
              holder.imageView.setDrawableResource(R.layout.blackHeart);
              beforeClicked = false; 
          }
        });
    

    可能有一些拼写错误。你可以纠正它。

    【讨论】:

    • 它第一次起作用,之后心脏不白了。
    • 在哪里声明了这个布尔值 beforeClicked =false;
    • 在 OnBindViewHolder() 中。
    【解决方案2】:

    试试这个:

    //Define Global Variable
    Boolean isCheck =  true;
    
    //On click of icon
    isCheck =! isCheck // This will make boolean switch like On/Off
    
    if(isCheck){
      //Add your fill icon here
    }else{
      //Add your un-filled icon here
    }
    

    【讨论】:

      【解决方案3】:

      是的,您需要在回收站视图项中添加按钮并将一个标志添加到您的模型类中因此,当您第一次单击时将图像更改为第二个(填充的心)并将标志设置为 true,然后单击第二次转到为您喜欢的图像代码。

      所以,你的代码结构如下所示

      你的模型

      public class model {
      
          private boolean isFirstTime = false;
      
          ...
      
          public boolean isFirstTime() {
              return isFirstTime;
          }
      
          public void setFirstTime(boolean firstTime) {
              isFirstTime = firstTime;
          }
      
          ...
      }
      

      将以下代码添加到您的适配器

      holder.yourView.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              if (!arrayList.get(position).getIsClick()) {
                  holder.yourImageView.setImageResource(getResources().getDrawable(R.drawable.secondImage));
                  arrayList.get(position).setIsClick(true);
              } else {
                  //your like image code
              }
              notifyDataSetChanged();
          }
      });
      

      希望对你有帮助!

      谢谢。

      【讨论】:

      • 你检查我的答案吗?
      • 产生了什么问题?
      猜你喜欢
      • 1970-01-01
      • 2015-09-06
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多