Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1566691
  • 博文数量: 113
  • 博客积分: 3526
  • 博客等级: 中校
  • 技术积分: 1815
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-08 09:46
个人简介

记录总结自己的工作

文章分类

全部博文(113)

文章存档

2015年(19)

2014年(10)

2013年(6)

2012年(16)

2011年(24)

2010年(21)

2009年(17)

分类: Android平台

2014-10-29 11:16:45

        在网上看了一些他人实现的滑动删除demo,一般都是自定义一个listview,重写里面的ontouch方法等来实现。但是如果使用的listview是其他的自定义view,这样改写起来就比较麻烦了,而且开发调试的过程也会很麻烦,容易出现bug。思考了一下,我们完全可以将HorizontalScrollView内嵌到listview中来实现这种滑动删除效果,而且实现起来要简单得多了。

       实现这种效果的关键是每个item都是一个HorizontalScrollView,然后将item的内容内嵌到HorizontalScrollView中。主要代码如下:

点击(此处)折叠或打开

  1. @Override
  2.         public View getView(final int position, View convertView, ViewGroup parent) {
  3.             HorizontalScrollView v = new HorizontalScrollView(getBaseContext());
  4.             LinearLayout li = new LinearLayout(getBaseContext());

  5.             TextView tv = new TextView(getBaseContext());
  6.             tv.setText(items.get(position));
  7.             tv.setLayoutParams(textViewParams);

  8.             Button button = new Button(getBaseContext());
  9.             button.setText("delete");
  10.             button.setLayoutParams(buttonParams);
  11.             button.setOnClickListener(new OnClickListener() {

  12.                 @Override
  13.                 public void onClick(View v) {
  14.                     items.remove(position);
  15.                     notifyDataSetChanged();
  16.                 }
  17.             });

  18.             li.addView(tv);
  19.             li.addView(button);
  20.             v.addView(li);
  21.             v.setHorizontalScrollBarEnabled(false);
  22.             return v;
  23.         }
        在这里我定义了一个textView用来展示内容,一个删除按钮进行删除操作。textview的宽度要设为和屏幕一样宽,这样在滑动前是看不到删除按钮的。
        完整的项目代码:ScrollDelete.rar



阅读(7577) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~