使用SlidingListTile时阻止垂直滚动

时间:2018-02-15 15:09:02

标签: gluon

我想使用SlidingListTile,但我遇到了一些问题。 我认为当我们使用水平滑动时,垂直滚动应该被锁定,因为在手机上很难完成滑动。

有人得到这样的情况吗?

提前致谢,

以下是我的代码的一部分:

    slidingTile.swipedLeftProperty().addListener((obs, ov, nv) -> {
        if (nv && edit != null) {
            edit.accept(currentItem);
        }
        slidingTile.resetTilePosition();
    });
    slidingTile.swipedRightProperty().addListener((obs, ov, nv) -> {
        if (nv && edit != null) {
            edit.accept(currentItem);
        }
        slidingTile.resetTilePosition();
    });

1 个答案:

答案 0 :(得分:0)

确实,评论2.0 sample中存在错误。

CommentsPresenterListCell定义自定义ListView,并从列表视图中的每个单元格BooleanProperty创建binding

commentsList.setCellFactory(cell -> { 
        final CommentListCell commentListCell = new CommentListCell(
                service,...);

        // notify view that cell is sliding
        sliding.bind(commentListCell.slidingProperty());

        return commentListCell; 
    });

显然,每个单元格的滑动属性可能会随时间变化,但只有最后一组才会占优势,因此它不会反映任何其他单元格的此属性的变化。

修复很简单:不要使用绑定,但是每个单元格的侦听器 将在该单元格滑动时设置值:

commentsList.setCellFactory(cell -> { 
        final CommentListCell commentListCell = new CommentListCell(
                service,...);

        // notify view that cell is sliding
        commentListCell.slidingProperty().addListener((obs, ov, nv) -> 
            sliding.set(nv));

        return commentListCell; 
    });

我已经提交了issue