gpt4 book ai didi

android - Android-SwipeListView 中的一个错误

转载 作者:太空狗 更新时间:2023-10-29 12:42:46 25 4
gpt4 key购买 nike

最近我在使用 Android-SwipeListView 库,这是一个很棒的工作。开门见山,我的要求是当我向左滑动一个项目时,其他项目必须关闭。然后在我向左打开第一个项目后,我再次开始非常非常缓慢地向左滑动第二个项目,同时我的手指仍然触摸屏幕。在 Opening 开始时(BaseSwipeListView 中的 onStartOpen()),打开的项目很快关闭。在打开的开始关闭的时候,我的手指停止了移动。结果,第二个项目停在那里。结果如下: The first item is open normally

When the second started to move, stop moving finger

When started swiping again when the third started to move, stop moving finger

同时,我的布局是:

<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() 关闭所有打开的项目。但是当有半开的item时,SwipeListView是如何处理的呢?这是 SwipeListView 中的错误吗?

最佳答案

是的,这确实是一个错误。监听器只听 Action Open 或 Close,包括 Open started、Open opened、Close started 和 Close opened。但是在滑动过程中,我们除了可以获取 x 和 y 的 onMove 之外什么也做不了。所以,真可惜!

添加:

最终,我找到了解决此错误的方法。我修改了名为 closeAnimate 的函数的实现。是在349行,修改后的closeAnimate(int)在这里:

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

所以,终于解决了。垂直快速滚动时不会再发生崩溃。

PS:同样的问题出现在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);
}
}

关于android - Android-SwipeListView 中的一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com