Coder Social home page Coder Social logo

dragablerecyclerview's Introduction

DragableRecyclerView

dragable and swipeable pullrefresh recyclerview--支持拖拽排序,侧滑删除,和下拉刷新上拉加载更多

useage

Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. Add the dependency

dependencies {
        compile 'com.github.yilylong:DragableRecyclerView:v1.0.2'
}

in your xml:

<com.zhl.dragablerecyclerview.view.DragableRecyclerView
    android:id="@+id/recyclerview"
    android:background="#5e5c5c"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

swipe menu

// 是否开启侧滑
    mRecyclerView.setSwipeEnable(true);
// 设置侧滑菜单
    mRecyclerView.setMenuCreator(new SwipeMenuCreator() {
        @Override
        public void create(SwipeMenu menu) {
            SwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext());
            deleteItem.setBackground(R.color.colorAccent);
            deleteItem.setWidth(dp2px(MainActivity.this, 90));
            deleteItem.setTitle("删除");
            deleteItem.setIcon(R.mipmap.icon_delete);
            deleteItem.setTitleSize(18);
            deleteItem.setTitleColor(Color.WHITE);
            menu.addMenuItem(deleteItem);

            SwipeMenuItem collectionItem = new SwipeMenuItem(getApplicationContext());
            collectionItem.setBackground(R.color.green);
            collectionItem.setWidth(dp2px(MainActivity.this, 90));
            collectionItem.setTitle("收藏");
            collectionItem.setTitleSize(18);
            collectionItem.setTitleColor(Color.WHITE);
            collectionItem.setIcon(R.mipmap.icon_collection);
            menu.addMenuItem(collectionItem);
        }
    });
    
// 设置侧滑菜单的监听
    mRecyclerView.setOnSwipedMenuItemClickListener(new DragableRecyclerView.OnSwipedMenuItemClickListener() {

        @Override
        public void onMenuItemClick(int position, RecyclerView.Adapter<RecyclerView.ViewHolder> adapter, SwipeMenu menu, int index) {
            if(index==0){
                adapter.notifyItemRemoved(position);
                Toast.makeText(MainActivity.this,"删除第"+position+"项",Toast.LENGTH_SHORT).show();
            }else if(index==1){
                Toast.makeText(MainActivity.this,"收藏第"+position+"项",Toast.LENGTH_SHORT).show();
            }
        }
    });       

长按拖拽排序

// 是否可以长按拖拽
    mRecyclerView.setLongPressDragEnabled(true);  
    // 设置长按拖拽的监听
    mRecyclerView.setOnItemDragListener(new DragableRecyclerView.OnItemDragListener() {
        @Override
        public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
            if(viewHolder!=null){
                viewHolder.itemView.setBackgroundResource(R.color.colorAccent);
            }
        }
        @Override
        public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, int fromPos, RecyclerView.ViewHolder target, int toPos, int x, int y) {
            String movedTX = Data.remove(fromPos);
            Data.add(toPos,movedTX);
        }

        @Override
        public boolean onDragScaleable() {
            return true;
        }
        @Override
        public void onDragCompleted(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            viewHolder.itemView.setBackgroundResource(R.color.gray);
        }
    });

        下拉刷新

// 是否开启下拉刷新
    mRecyclerView.setPullRefreshEnable(true);
    // 是否开启上拉加载
    mRecyclerView.setPullLoadMoreEnable(true);
// 设置下拉刷新的监听
    mRecyclerView.setPullRefreshListener(new DragableRecyclerView.OnPullRefreshListener() {
        @Override
        public void onRefresh() {
            mRecyclerView.postDelayed(new Runnable() {
                @Override
                public void run() {
                    refresh();
                    mRecyclerView.stopRefresh();
                }
            },3000);
        }
        @Override
        public void onLoadMore() {

            mRecyclerView.postDelayed(new Runnable() {
                @Override
                public void run() {
                    loadMore();
                    mRecyclerView.stopLoadMore();
                }
            },3000);
        }
        @Override
        public void onUpdateRefreshTime(long time) {
            mRecyclerView.setRefreshTime(time);
        }
    });

自定义刷新头

 
    继承CBRefreshHeaderView,根据需要覆盖CBRefreshState中的各种状态方法,recyclerview会回调下拉刷新和上拉加载的各种方法。主要通过更改刷新头高度或者mragin来实现,参考CBRefreshHeader和CBRefreshFooter。

  // 设置自定义的下拉刷新和上拉加载刷新头
 mRecyclerView.setRefreshHeader(new CustomHeader(this));
 mRecyclerView.setLoadMoreFooter(new CustomFooter(this));

另外listview 版本的看这里:CBPullRefreshListView 感谢Xrecyclerview XlistView

 

dragablerecyclerview's People

Contributors

yilylong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dragablerecyclerview's Issues

allowBackup属性值冲突

DragableRecyclerView项目中allowBackup=“true”,但是我自己的项目里面allowBackup设置为false,这时候会有冲突。我觉得DragableRecyclerView中还是allowBackup=“false”比较好

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.