SwipeLayout在ListView中使用的使用的问题

来源:互联网 发布:小猪cms伪静态 编辑:程序博客网 时间:2024/05/17 08:39

在ListView中使用SwipeLayout时,SwipeLayout在BaseSwipeAdapter暴露了两个方法:

public View generateView(nt position, ViewGroup parent)public void fillValues(int position, View convertView) 

一般来说,实现这两个方法就可以了。
遇到的问题:
1.在generateView中监听删除按钮(举个例子,可能是其他功能的按钮),在监听事件中需要找到当前操作的Item在所有数据中的位置,但是在generateView的参数中的position,位置指向不对。

这个问题其实看下BaseSwipeAdapter源码就知道了:

@Override    public final View getView(int position, View convertView, ViewGroup parent) {        View v = convertView;        if(v == null){            v = generateView(position, parent);            mItemManger.initialize(v, position);        }else{            mItemManger.updateConvertView(v, position);        }        fillValues(position, v);        return v;    }

很明显了,generateView方法中的position是会重用的,but,fillValues的position参数是item的正确的位置,所以,想要操作所有的数据的话,就到fillValues方法中写就可以了。
2.还是删除的例子,滑动,出来删除按钮,点击删除按钮,本条数据删除,但是下一条数据会呈现滑动之后的状态。
这个其实很好解决,SwipeLayout提供了方法的:

 closeAllItems(); closeAllExcept(); closeItem();

看情况调用就可以了

0 0
原创粉丝点击