拖放到“列表视图”中

我正在尝试在android(冰淇淋三明治)中实现拖放。因此,当拖动的对象到达的边缘时,我正在向相关方向滚动。问题是,当我们滚动时,有时适配器会根据需要创建新的s,而这些“new”之前没有收到事件,因此没有收到更新。有没有办法将事件也发送到这些视图?ListViewListViewListViewViewViewACTION_DRAG_STARTEDDragEvent


答案 1

在列表视图中实现拖放的最简单方法是使用这个出色的库。https://github.com/commonsguy/cwac-touchlist 值得一试。


答案 2

查看 View 的源代码,我看到:

static final int DRAG_CAN_ACCEPT              = 0x00000001;
int mPrivateFlags2;

boolean canAcceptDrag() {
    return (mPrivateFlags2 & DRAG_CAN_ACCEPT) != 0;
}

mPrivateFlags2 是包私有的,不会由 SDK 公开。但是,您应该能够通过执行以下操作在子类中更改它:

try {
    Field mPrivateFlags2 = this.getClass().getField("mPrivateFlags2");
    int currentValue = mPrivateFlags2.getInt(this);
    mPrivateFlags2.setInt(this, currentValue | 0x00000001);
} catch (Exception e) {
}

推荐