首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android列表视图拖放排序

Android列表视图拖放排序
EN

Stack Overflow用户
提问于 2010-05-26 07:51:02
回答 4查看 105.7K关注 0票数 132

我在列表视图中有一个记录列表,希望用户能够使用拖放方法对其进行重新排序。我已经在其他应用程序中看到了这一点,但我还没有找到针对它的教程。它必须是其他人也需要的东西。有没有人能给我指点一些这样做的代码?

EN

回答 4

Stack Overflow用户

发布于 2016-03-24 16:46:55

现在很容易用ItemTouchHelper实现RecyclerView。只需覆盖ItemTouchHelper.Callback中的onMove方法

代码语言:javascript
复制
 @Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
    mMovieAdapter.swap(viewHolder.getAdapterPosition(), target.getAdapterPosition());
    return true;
}

有关这方面的非常好的教程可以在medium.com:Drag and Swipe with RecyclerView上找到

票数 25
EN

Stack Overflow用户

发布于 2013-08-26 17:37:19

我添加这个答案是为了让那些在谷歌上搜索这个问题的人知道..

最近DevBytes (ListView Cell Dragging and Rearranging)的一个插曲解释了如何做到这一点

你可以在here上找到它,也可以找到示例代码。

这段代码主要做的是通过listview的扩展创建一个支持单元格拖动和交换的dynamic listview。为了能够使用DynamicListView而不是基本的ListView,您已经实现了一个具有拖放功能的ListView。

票数 18
EN

Stack Overflow用户

发布于 2016-03-24 16:29:17

DragListView库可以很好地支持自定义动画,比如仰角动画。它还会定期维护和更新。

下面是你如何使用它:

1:首先将库添加到gradle

代码语言:javascript
复制
dependencies {
    compile 'com.github.woxthebox:draglistview:1.2.1'
}

2:从xml添加列表

代码语言:javascript
复制
<com.woxthebox.draglistview.DragListView
    android:id="@+id/draglistview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

3:设置拖动监听器

代码语言:javascript
复制
mDragListView.setDragListListener(new DragListView.DragListListener() {
    @Override
    public void onItemDragStarted(int position) {
    }

    @Override
    public void onItemDragEnded(int fromPosition, int toPosition) {
    }
});

4:创建从DragItemAdapter重写的适配器

代码语言:javascript
复制
public class ItemAdapter extends DragItemAdapter<Pair<Long, String>, ItemAdapter.ViewHolder>
    public ItemAdapter(ArrayList<Pair<Long, String>> list, int layoutId, int grabHandleId, boolean dragOnLongPress) {
        super(dragOnLongPress);
        mLayoutId = layoutId;
        mGrabHandleId = grabHandleId;
        setHasStableIds(true);
        setItemList(list);
}

5:实现一个从DragItemAdapter.ViewHolder扩展的viewholder

代码语言:javascript
复制
public class ViewHolder extends DragItemAdapter.ViewHolder {
    public TextView mText;

    public ViewHolder(final View itemView) {
        super(itemView, mGrabHandleId);
        mText = (TextView) itemView.findViewById(R.id.text);
    }

    @Override
    public void onItemClicked(View view) {
    }

    @Override
    public boolean onItemLongClicked(View view) {
        return true;
    }
}

有关更多详细信息,请访问https://github.com/woxblom/DragListView

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2909311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档