今天项目使用了SwipeLayout开源项目,就是像QQ侧滑删除效果的第三方库,支持上下左右划出布局,并支持所有组件!非常强大!在这里写下它的简单使用,当作自己的笔记。
这里用Listview来举例。
首先写布局文件list_item.xml:
注意: 默认是SwipeLayout的第一个子布局作为SwipeLayout!对于上面的布局来说,也就是第一个LinearLayout作为SwipeLayout。
接着实现Adapter:
作者已经帮我们封装好各种Adapter了,我们只需实现继承之并实现它的方法就好了。
这里拿继承了BaseAdapter的BaseSwipeAdapter的举例:
需要实现一下几个抽象方法:
public abstract int getSwipeLayoutResourceId(int position); // 返回SwipeLayout的id
public abstract View generateView(int position, ViewGroup parent); // 生成list_item布局文件
public abstract void fillValues(int position, View convertView); // 绑定数据
public int getCount();
public Object getItem(int position);
public long getItemId(int position);
public final View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null){
v = generateView(position, parent);
}
mItemManger.bind(v, position);
fillValues(position, v);
return v;
}
@Override
public int getSwipeLayoutResourceId(int position) {
return R.id.swipe_layout;
}
@Override
public View generateView(int position, ViewGroup parent) {
View v = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null);
SwipeLayout swipeLayout = (SwipeLayout)v.findViewById(getSwipeLayoutResourceId(position));
swipeLayout.addSwipeListener(new SimpleSwipeListener() {
@Override
public void onOpen(SwipeLayout layout) {
// SwipeLayout划出时调用
}
});
swipeLayout.setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() {
@Override
public void onDoubleClick(SwipeLayout layout, boolean surface) {
// SwipeLayout双击时调用
}
});
v.findViewById(R.id.delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 监听SwipeLayout中的组件的点击事件
}
});
return v;
}
@Override
public void fillValues(int position, View convertView) {
TextView t = (TextView)convertView.findViewById(R.id.text_view); // 绑定数据
t.setText("item" + position);
}
最后在Activity里的操作跟平常的ListView操作没什么区别了,这里再说说几个常用的方法:
swipeLayout.getSurfaceView(); // 可以获取表面的View,既是普通状态下的布局
swipeLayout.addDrag(SwipeLayout.DragEdge.Left, swipeLayout.findViewById(R.id.wrapper)); // 设置SwipeLayout在左边
相应的还可以设置上下右:只需把SwipeLayout.DragEdge.Leftt改成相应的Top、Bottom和Right就好。
好吧,我就了解到这里了,有不懂得去看作者的代码吧。
项目地址:AndroidSwipeLayout