4

我一直在尝试使用 ItemTouchHelper 在我的笔记应用程序中实现拖放功能,但是我正在努力弄清楚如何让它与光标一起使用。我目前正在使用游标加载器和内容提供程序从数据库中检索存储的笔记数据,并且适配器从返回的游标接收它的数据,如图所示。

public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder holder, int position) {
    mCursor.moveToPosition(position);
    String title = mCursor.getString(mCursor.getColumnIndex(NotesContract.COL_TITLE));
    String body = mCursor.getString(mCursor.getColumnIndex(NotesContract.COL_BODY));
    holder.titleText.setText(title);
    holder.bodyText.setText(body);
}

我遇到的问题是,当我拖放它们时,我不知道如何跟踪列表中移动项目的位置。我无法更改游标中行的顺序。我只看到适配器的数据源是列表的示例。我曾考虑将光标数据复制到 Note 对象列表中,以便我可以重新排列它们以反映通过拖放所做的更改,但这似乎破坏了使用光标和光标加载器所获得的一切。此外,当游标加载器完成加载时,它将再次返回一个新游标,其中包含原始顺序中的所有结果并相应地填充适配器,因此如果我的新列表将丢失,则对顺序所做的任何更改都会丢失。

有谁知道如何做到这一点,或者我是否使用游标和加载器完全错误地解决了这个问题?任何帮助将非常感激。谢谢!

4

2 回答 2

2

我通过在表中添加一个名为 sort_order 的列来跟踪排序顺序来做到这一点。当您拖放时,您会更新 ItemTouchHelper.SimpleCallback 中 onMove 方法中的 sort_order。

于 2016-08-16T14:42:33.900 回答
0

一个很好的教程如何实现拖放和滑动关闭你可以在这里找到

你到底需要那个光标做什么?如果您有任何具体问题,请添加评论。我在这个功能上做了很多工作!

于 2016-08-17T21:25:05.973 回答