【问题标题】:Identify a button click on list view android识别一个按钮点击列表视图android
【发布时间】:2021-08-05 20:37:42
【问题描述】:

我使用扩展ArrayAdapter<String> 的自定义适配器创建了ListView。单击+ 按钮时,我需要将项目名称添加到ArrayList

【问题讨论】:

    标签: java android listview position buttonclick


    【解决方案1】:

    你可以像往常一样做(就像在MainActivity中一样),只需在GetView(...)中链接它

    【讨论】:

      【解决方案2】:

      在您的 ArrayAdapter.java 中,添加以下内容:

          private OnItemClickListener mListener;
      
          public interface OnItemClickListener
          {
              void onAddClick(int position);
          }
      
          public void setOnItemClickListener(OnItemClickListener listener)
          {
              mListener = listener;
          }
      

      在同一文件上的 Holder 函数中,执行以下操作:

          AddButtonVariable.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  if(listener != null)
                  {
                      int position = getAdapterPosition();
                      if(position != ListView.NO_POSITION)
                      {
                          listener.onAddClick(position);
                      }
                  }
              }
          });
      

      Activity.java 文件的 onResponse 函数中,在 setAdapter 之后添加:

      listAdapter.setOnItemClickListener(new ArrayAdapter.OnItemClickListener() {
          @Override
          public void onAddClick(int position){           
                  functiontoAdd(String.valueOf(position));
          }
      });
      

      现在,最后,在您的 Activity.Java 文件中,在最后(类的右括号之前)添加以下内容:

      private void functiontoAdd(String position)
      {
          // rest of the code to add item in cart
      }
      

      看,使用 Recycler 视图而不是列表视图更简单。但是如果你已经创建了也没关系。

      【讨论】:

        【解决方案3】:
        listview.setOnItemClickListener(new OnItemClickListener()
               {
                  @Override
                  public void onItemClick(AdapterView<?> adapter, View v, int position,
                        long id) 
                  {
                //I am assuming the ArrayAdapter is having list of dish name as string if the list is of Custom class please change the below code as per it.
                        String dish = (String)adapter.getItemAtPosition(position); 
            
                  }
               });
        
        

        adapter AdapterView:发生点击的 AdapterView。

        view View:AdapterView中被点击的view(这将是adapter提供的view)

        position int:视图在适配器中的位置。

        id long:被点击项的行id。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多