天天看點

SwipeLayout在ListView中使用的使用的問題

在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;
    }      
closeAllItems();
 closeAllExcept();
 closeItem();