MCPcopy Index your code
hub / github.com/Syehunter/DragLayout

github.com/Syehunter/DragLayout @1.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.1 ↗ · + Follow
130 symbols 249 edges 21 files 29 documented · 22%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

DragLayout

RecyclerView with GridLayout that can be dragged.You may use this like the Netease ChannelManager or in some otherwise.

The DragLayout implemented with RecyclerView.

Usage:

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

dependencies {
    compile 'com.github.Syehunter:DragLayout:1.0.0'
}

There might be some error occurs when gradle build in Android Studio 2.0 with "META-INF/maven/com.belerweb/pinyin4j/pom.properties"(for I imported Pinyin4j.jar into library), just add this in your build.gradle:

android {
    ...
    packagingOptions {
        exclude 'META-INF/maven/com.belerweb/pinyin4j/pom.properties'
        exclude 'META-INF/maven/com.belerweb/pinyin4j/pom.xml'
    }
}

The layout above is DragRecyclerView, and UnsignedRecyclerView below.

Defaulst is Chinese, and the UnsignedRecyclerView is sort by Pinjin, Use this in your code if you want to change the item content only:

mDragView.datas(dragList)
            .onItemClick(new OnItemClickListener() {
                @Override
                public void onItemClick(RecyclerView.ViewHolder holder, int position) {
                    Toast.makeText(MainActivity.this,
                            "position" + position + "has been clicked", Toast.LENGTH_SHORT).show();
                }
            })
            .onLongPress(new OnLongPressListener() {
                @Override
                public void onLongPress() {
                    mQuitBtn.setVisibility(View.VISIBLE);
                }
            })
            .onItemRemoved(new OnItemRemovedListener<String>() {
                @Override
                public void onItemRemoved(int position, String removedItem) {
                    mUnsignedView.addItem(removedItem);
                }
            })
            .keepItemCount(2)
            .build();

mUnsignedView = (UnsignedRecyclerView) findViewById(R.id.unsignedView);

mUnsignedView.hanZiDatas(unsignedList)
            .onItemRemoved(new OnItemRemovedListener<String>() {
                @Override
                public void onItemRemoved(int position, String removedItem) {
                    mDragView.addItem(removedItem);
                }
            })
            .build();

Method keepItemCount() that could let you set the unmoved item counts, default is 1.

Define your adapter extends BaseDragAdapter or BaseUnsignedAdapter if you don't like this, and dragViewHolder extends BaseDragViewHolder, remember to use DragGridLayoutManager instead of GridLayoutMananger, which will adjust RecyclerView's height to wrap_content(Unfortunately the DragGridLayoutManager doesn't support RecyclerView that has set SpanSizeLookup now, I will fix it in future).

Extension points exported contracts — how you extend this code

OnItemRemovedListener (Interface)
Created by Syehunter on 16/1/28. [5 implementers]
library/src/main/java/z/sye/space/library/interfaces/OnItemRemovedListener.java
OnItemChangeListener (Interface)
Created by Syehunter on 16/1/26. [2 implementers]
library/src/main/java/z/sye/space/library/interfaces/OnItemChangeListener.java
OnLongPressListener (Interface)
Created by Syehunter on 16/1/27. [2 implementers]
library/src/main/java/z/sye/space/library/interfaces/OnLongPressListener.java
OnItemClickListener (Interface)
Created by Syehunter on 16/1/26. [2 implementers]
library/src/main/java/z/sye/space/library/interfaces/OnItemClickListener.java
DragItemStartListener (Interface)
Created by Syehunter on 16/1/26. [2 implementers]
library/src/main/java/z/sye/space/library/interfaces/DragItemStartListener.java

Core symbols most depended-on inside this repo

onItemRemoved
called by 6
library/src/main/java/z/sye/space/library/interfaces/OnItemChangeListener.java
getItemViewType
called by 4
library/src/main/java/z/sye/space/library/adapters/BaseDragAdapter.java
build
called by 2
library/src/main/java/z/sye/space/library/DragRecyclerView.java
addItem
called by 2
library/src/main/java/z/sye/space/library/DragRecyclerView.java
measureChild
called by 2
library/src/main/java/z/sye/space/library/DragGridLayoutManager.java
makeInsetsDirty
called by 2
library/src/main/java/z/sye/space/library/DragGridLayoutManager.java
onMakeInsertDirtyFailed
called by 2
library/src/main/java/z/sye/space/library/DragGridLayoutManager.java
logMeasureWarning
called by 2
library/src/main/java/z/sye/space/library/DragGridLayoutManager.java

Shape

Method 107
Class 18
Interface 5

Languages

Java100%

Modules by API surface

library/src/main/java/z/sye/space/library/adapters/BaseDragAdapter.java19 symbols
library/src/main/java/z/sye/space/library/DragRecyclerView.java16 symbols
library/src/main/java/z/sye/space/library/UnsignedRecyclerView.java10 symbols
library/src/main/java/z/sye/space/library/DragGridLayoutManager.java10 symbols
library/src/main/java/z/sye/space/library/interfaces/DragItemTouchHelperCallBack.java9 symbols
library/src/main/java/z/sye/space/library/adapters/BaseUnsignedAdapter.java9 symbols
library/src/main/java/z/sye/space/library/adapters/UnsignedAdapter.java8 symbols
app/src/main/java/z/sye/space/draglayout/MainActivity.java8 symbols
library/src/main/java/z/sye/space/library/holders/DragViewHolder.java6 symbols
library/src/main/java/z/sye/space/library/holders/BaseDragViewHolder.java6 symbols
library/src/main/java/z/sye/space/library/adapters/DragAdapter.java5 symbols
library/src/main/java/z/sye/space/library/interfaces/OnItemChangeListener.java4 symbols

For agents

$ claude mcp add DragLayout \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact