zoukankan      html  css  js  c++  java
  • Android ListView实现单击item出现删除按钮以及滑动出现删除按钮

    我自己一个人弄的公司的产品客户端,所以还是想记录下来以免忘记或者丢失...

    在我的上一篇博文(点击打开链接)是一个文件管理的东西,基础组件也是ListView所以在此只是改动一下而已。

    单击:

    点击出现按钮比较简单只需要替换上文中file_row.xml的checkbox为button就可以,然后自己实现onclicklistener就行了,唯一要注意的就是要在xml文件中的button的android:clickable属性设置为true就可以了。

    滑动:

    滑动来说也相对比较简单需要在上文种FileAdapter.java类中getView方法里的convertView参数对象设置ontouchlistener就可以了,具体看代码:

    [java] view plaincopy
     
    1. @Override  
    2.     public View getView(int position,View convertView,ViewGroup parent){  
    3.         ViewHolder holder;  
    4.   
    5.         if(convertView == null){  
    6.             convertView = mInflater.inflate(R.layout.filemanage, null);  
    7.             convertView.setOnTouchListener(new OnTouchListener(){  
    8.   
    9.                 @Override  
    10.                 public boolean onTouch(View v, MotionEvent event) {  
    11.                     switch(event.getAction())//根据动作来执行代码     
    12.                     {    
    13.                     case MotionEvent.ACTION_MOVE://滑动     
    14.                         Toast.makeText(context, "move...", Toast.LENGTH_SHORT).show();  
    15.                         break;    
    16.                     case MotionEvent.ACTION_DOWN://按下     
    17.                         Toast.makeText(context, "down...", Toast.LENGTH_SHORT).show();  
    18.                         DownX = event.getX();  
    19.                         break;    
    20.                     case MotionEvent.ACTION_UP://松开     
    21.                         UpX = event.getX();  
    22.                         Toast.makeText(context, "up..." + Math.abs(UpX-DownX), Toast.LENGTH_SHORT).show();  
    23.                         if(Math.abs(UpX-DownX) > 20){  
    24.                             ViewHolder holder = (ViewHolder) v.getTag();  
    25.                             holder.cBox.setVisibility(View.VISIBLE);  
    26.                         }  
    27.                         break;    
    28.                     default:    
    29.                     }    
    30.                     return true;   
    31.                 }  
    32.             });  
    33.             holder = new ViewHolder();  
    34.             VHs.add(holder);  
    35.             holder.text = (TextView) convertView.findViewById(R.id.filetext);  
    36.             holder.text.setTextColor(context.getResources().getColor(R.color.text_color));  
    37.             holder.icon = (ImageView) convertView.findViewById(R.id.fileicon);  
    38.             holder.cBox = (Button) convertView.findViewById(R.id.delete_btn);  
    39.             holder.cBox.setOnClickListener(new OnClickListener(){  
    40.                 public void onClick(View v) {  
    41.                     Toast.makeText(context, "btn click...", Toast.LENGTH_SHORT).show();  
    42.                 }  
    43.             });  
    44.             convertView.setTag(holder);  
    45.         }else{  
    46.             holder = (ViewHolder) convertView.getTag();  
    47.         }  
    48.         File f=new File(paths.get(position).toString());  
    49.         if(items.get(position).toString().equals("goroot")){  
    50.             holder.text.setText("返回根目录");  
    51.             holder.icon.setImageBitmap(mIcon1);  
    52.             holder.cBox.setVisibility(isVisibility.get(position));  
    53.         }else if(items.get(position).toString().equals("goparent")){  
    54.             holder.text.setText("返回上一级");  
    55.             holder.icon.setImageBitmap(mIcon2);  
    56.             holder.cBox.setVisibility(isVisibility.get(position));  
    57.         }else{  
    58.             holder.text.setText(f.getName());  
    59.             if(f.isDirectory()){  
    60.                 holder.icon.setImageBitmap(mIcon3);  
    61.                 holder.cBox.setVisibility(isVisibility.get(position));  
    62.             }else{  
    63.                 holder.icon.setImageBitmap(mIcon4);  
    64.                 holder.cBox.setVisibility(isVisibility.get(position));  
    65.             }  
    66.         }  
    67.         return convertView;  
    68.     }  


    滑动多少距离产生效果自己计算,不过我给的20好像少了点。

    ///发现listitem 不响应onItemClick;只能在up事件后调用;这是我修改后的代码:
    public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction())// 根据动作来执行代码
    {
    case MotionEvent.ACTION_MOVE:// 滑动
    break;
    case MotionEvent.ACTION_DOWN:// 按下
    v.setPressed(true);//item的点击效果
    downX = event.getX();
    break;
    case MotionEvent.ACTION_UP:// 松开
    v.setPressed(false);//item的点击效果
    upX = event.getX();
    if (Math.abs(upX - downX) > 50) {
    Button bt_delete = (Button) v.findViewById(R.id.delete);
    bt_delete.setVisibility(View.VISIBLE);
    return true;
    }
    //调用onItemClick接口的实现
    listView.performItemClick(v, pos, listView.getItemIdAtPosition(pos));
    return false;
    default:
    break;
    }
    return true;
    }

  • 相关阅读:
    使用Webuploader大文件分片传输
    php面向对象的封装性
    前端实习经历
    Js_protoType_原型
    SVN客户端与服务器端搭建操作
    安装PL/SQL客户端来访问操作步骤
    安装Oracle数据库操作步骤
    MyEclipse2014安装操作步骤+破解
    模块学习笔记
    json与导入模块目录
  • 原文地址:https://www.cnblogs.com/superjt/p/3459747.html
Copyright © 2011-2022 走看看