Android ListView是Android中最常用的控件之一,它可以方便地展示列表数据。而滑动删除是ListView中比较常用的功能之一,本文将介绍如何实现ListView滑动删除item的功能。

实现思路:
1. 继承BaseAdapter,重写getView()方法,为每个item添加滑动删除功能。在getView()方法中,为每个item添加OnTouchListener,监听滑动操作。
2. 当用户按下item时,记录下按下的点的坐标,并且将item的状态设置为正在滑动中。
3. 当用户手指滑动时,计算出滑动距离,并将item的布局向左移动相应距离。
4. 当用户松开手指时,根据item的滑动距离是否超过了一定阈值,来决定是否删除该item。如果滑动距离超过了阈值,则删除该item,否则恢复item原本的布局。
代码实现:
```java
public class MyAdapter extends BaseAdapter {
private List
private Context mContext;
public MyAdapter(Context context, List
mContext = context;
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);
viewHolder = new ViewHolder();
viewHolder.textView = convertView.findViewById(R.id.text_view);
viewHolder.deleteView = convertView.findViewById(R.id.delete_view);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(mData.get(position));
//为item添加OnTouchListener,监听滑动操作
convertView.setOnTouchListener(new View.OnTouchListener() {
private int downX;
private boolean isSliding;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downX = (int) event.getX();
isSliding = false;
break;
case MotionEvent.ACTION_MOVE:
int distanceX = (int) (event.getX() - downX);
if (distanceX < -20) {
isSliding = true;
//滑动item
ViewHelper.setTranslationX(v, distanceX);
}
break;
case MotionEvent.ACTION_UP:
if (isSliding) {
if ((int) (event.getX() - downX) < -200) {
//滑动距离超过阈值,删除item
mData.remove(position);
notifyDataSetChanged();
} else {
//恢复item原本的布局
ViewHelper.setTranslationX(v, 0);
}
}
break;
}
return true;
}
});
return convertView;
}
private static class ViewHolder {
TextView textView;
View deleteView;
}
}
```
总结:
通过上述实现方法,我们可以方便地为ListView中的每个item添加滑动删除功能。同时,我们也可以在此基础上,实现更复杂的滑动操作,比如滑动菜单、滑动置顶等功能。