SLaks 2013-09-17 06:43 采纳率: 0%
浏览 6735

点击按钮从 ListView中 删除一行

程序中的 ListView 的行包含一些 textviews 和一个按钮。当用户点击按钮时,我想删除父类
并把按钮从 ListView中 删除。如何在一个嵌套的方法(onClickListener)中访问自定义的 ArrayAdapter 的字段?我使用的是 View v。我是否要多次调用 v.getParent(),或者还有什么更好的方法?

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
     ViewHolder holder = null;
     Action item = this.getItem(position);
     if (convertView == null) {
        convertView = inflater.inflate(R.layout.action_holder_layout,
              parent, false);
        holder = new ViewHolder();
        holder.title = (TextView) convertView
              .findViewById(R.id.action_holder_title);
        holder.finishBtn = (Button) convertView
              .findViewById(R.id.finish_action_button);
        convertView.setTag(holder);
     } else
        holder = (ViewHolder) convertView.getTag();
     holder.title.setText(item.getActionName());
     holder.finishBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
           //REMOVE THE ACTION FROM THE ADAPTER'S ARRAYLIST
        }
     });
     return convertView;
  }

  static class ViewHolder {

     private TextView title;
     private Button finishBtn;
  }
  • 写回答

2条回答 默认 最新

  • Jobernowl 2013-09-18 03:52
    关注
    @Override
    public int getCount(){
         return null!=list?list.size():0;
    }
    
    @Override
      public View getView(int position, View convertView, ViewGroup parent) {
         ViewHolder holder = null;
         Action item = this.getItem(position);
         if (convertView == null) {
            convertView = inflater.inflate(R.layout.action_holder_layout,
                  parent, false);
            holder = new ViewHolder();
            holder.title = (TextView) convertView
                  .findViewById(R.id.action_holder_title);
            holder.finishBtn = (Button) convertView
                  .findViewById(R.id.finish_action_button);
            convertView.setTag(holder);
         } else
            holder = (ViewHolder) convertView.getTag();
         holder.title.setText(item.getActionName());
         holder.finishBtn.setTag(position);
         holder.finishBtn.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
               //REMOVE THE ACTION FROM THE ADAPTER'S ARRAYLIST
               Object tag = v.getTag();
               if(null!=tag){
                   list.remove((Integer)tag);
                   notifyDataSetChanged();
               }
            }
         });
         return convertView;
      }
    
      static class ViewHolder {
    
         private TextView title;
         private Button finishBtn;
      }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler