最近我在使用android swipelistview库,这是一个很棒的工作。
直截了当地说,我的要求是,当我向左滑动一个项目时,其他项目必须关闭。然后,当我打开左边的第一个项目,再次,我开始刷第二个项目左非常慢的同时,我的手指仍然触摸屏幕。在开始打开时(BaseSwipeListView中的onStartOpen()),打开的项很快关闭。当打开的一个开始关闭时,我停止移动我的手指。结果,第二个项目就停在那里了。结果如下:
同时,我的布局是:

<com.fortysevendeg.swipelistview.SwipeListView
    android:id="@+id/album_detail_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/album_description_parent"
    android:layout_centerHorizontal="true"
    android:layout_margin="2dp"
    android:background="#ffffff"
    android:cacheColorHint="#000000"
    android:divider="@drawable/divider_bg"
    android:dividerHeight="2dp"
    android:drawingCacheQuality="auto"
    android:footerDividersEnabled="false"
    android:gravity="top|center_horizontal"
    android:headerDividersEnabled="false"
    app:swipeActionLeft="reveal"
    swipe:swipeBackView="@+id/detail_item_back"
    swipe:swipeCloseAllItemsWhenMoveList="true"
    swipe:swipeDrawableChecked="@drawable/choice_selected"
    swipe:swipeDrawableUnchecked="@drawable/choice_unselected"
    swipe:swipeFrontView="@+id/detail_item_front"
    swipe:swipeMode="left"
    swipe:swipeOpenOnLongPress="false" />

我的Java代码是:
albumContentSLV
            .setSwipeListViewListener(new BaseSwipeListViewListener() {
                @Override
                public void onStartOpen(int position, int action,
                        boolean right) {
                    // TODO Auto-generated method stub
                    albumContentSLV.closeOpenedItems();
                    super.onStartOpen(position, action, right);
                }
            });

是的,SwipeListView可以通过closeOpeneditems()关闭所有打开的项。但是当有半个打开的项目时,SwipeListView如何处理这个问题?这是SwipelistView里的虫子吗?

最佳答案

我使用了Android-SwipeListView的小部件库。我在Github上创建了这个库。我有办法解决这个图书馆的问题。这是我的project which I had fixed this bug,看看,再仔细看看。
我修改了closeAnimate的实现。在349号线。修改后的closeAnimate(int)如下:

protected void closeAnimate(int position) {
    View view = swipeListView.getChildAt(position - swipeListView.getFirstVisiblePosition());
    if (view != null) {
        closeAnimate(view.findViewById(swipeFrontView), position);
    }
}

然后,在垂直快速滚动期间不会再次发生崩溃。
同时,同样的问题也出现在openAnimate(int),修改后的openAnimate(int)如下:
protected void openAnimate(int position) {
    final View child = swipeListView.getChildAt(position - swipeListView.getFirstVisiblePosition()).findViewById(swipeFrontView);
    if (child != null) {
        openAnimate(child, position);
    }
}

07-26 09:42