在网上看了一些他人实现的滑动删除demo,一般都是自定义一个listview,重写里面的ontouch方法等来实现。但是如果使用的listview是其他的自定义view,这样改写起来就比较麻烦了,而且开发调试的过程也会很麻烦,容易出现bug。思考了一下,我们完全可以将HorizontalScrollView内嵌到listview中来实现这种滑动删除效果,而且实现起来要简单得多了。
实现这种效果的关键是每个item都是一个HorizontalScrollView,然后将item的内容内嵌到HorizontalScrollView中。主要代码如下:
-
@Override
-
public View getView(final int position, View convertView, ViewGroup parent) {
-
HorizontalScrollView v = new HorizontalScrollView(getBaseContext());
-
LinearLayout li = new LinearLayout(getBaseContext());
-
-
TextView tv = new TextView(getBaseContext());
-
tv.setText(items.get(position));
-
tv.setLayoutParams(textViewParams);
-
-
Button button = new Button(getBaseContext());
-
button.setText("delete");
-
button.setLayoutParams(buttonParams);
-
button.setOnClickListener(new OnClickListener() {
-
-
@Override
-
public void onClick(View v) {
-
items.remove(position);
-
notifyDataSetChanged();
-
}
-
});
-
-
li.addView(tv);
-
li.addView(button);
-
v.addView(li);
-
v.setHorizontalScrollBarEnabled(false);
-
return v;
-
}
在这里我定义了一个textView用来展示内容,一个删除按钮进行删除操作。textview的宽度要设为和屏幕一样宽,这样在滑动前是看不到删除按钮的。
完整的项目代码:
ScrollDelete.rar
阅读(7577) | 评论(0) | 转发(0) |