MCPcopy Index your code
hub / github.com/alidili/RecyclerViewHelper

github.com/alidili/RecyclerViewHelper @1.1.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.1.5 ↗ · + Follow
212 symbols 455 edges 28 files 87 documented · 41%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Banner

Travis Jitpack APK API LICENSE

:zap: A library to make RecyclerView more easy :zap:

中文

Dependency

Add this in your root build.gradle file:

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

Then, add the library to your module build.gradle:

dependencies {
    implementation 'com.github.alidili:RecyclerViewHelper:latest.release.here'
}

Pull up to load more

Pull up to load more

CommonAdapter commonAdapter = new CommonAdapter(mDataList);
mLoadMoreWrapper = new LoadMoreWrapper(commonAdapter);
customLoadingView();
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mLoadMoreWrapper);

// Set the load more listener
mRecyclerView.addOnScrollListener(new OnScrollListener() {
    @Override
    public void onLoadMore() {
        // TODO
    }
});

Custom loading view

private void customLoadingView() {
    // Custom loading view
    ProgressBar progressBar = new ProgressBar(this);
    mLoadMoreWrapper.setLoadingView(progressBar);

    // Custom loading end view
    TextView textView = new TextView(this);
    textView.setText("End");
    mLoadMoreWrapper.setLoadingEndView(textView);

    // Custom loading height
    mLoadMoreWrapper.setLoadingViewHeight(DensityUtils.dp2px(this, 50));
}

HeaderView / FooterView

HeaderView / FooterView

CommonAdapter commonAdapter = new CommonAdapter(mDataList);
mHeaderAndFooterWrapper = new HeaderAndFooterWrapper(commonAdapter);
addHeaderAndFooterView();
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mHeaderAndFooterWrapper);

Add header view and footer view

private void addHeaderAndFooterView() {
    // Add header view
    View headerView = View.inflate(this, R.layout.layout_header_footer, null);
    TextView headerItem = headerView.findViewById(R.id.tv_item);
    headerItem.setText("HeaderView");
    mHeaderAndFooterWrapper.addHeaderView(headerView);

    // Add footer view
    View footerView = View.inflate(this, R.layout.layout_header_footer, null);
    TextView footerItem = footerView.findViewById(R.id.tv_item);
    footerItem.setText("FooterView");
    mHeaderAndFooterWrapper.addFooterView(footerView);
}

Drag & Drop

Drag & Drop

CommonAdapter commonAdapter = new CommonAdapter(mDataList);
// Default response time 200ms
mDragAndDropWrapper = new DragAndDropWrapper(commonAdapter, mDataList, 200);
mDragAndDropWrapper.attachToRecyclerView(mRecyclerView, true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mDragAndDropWrapper);

Swipe to dismiss

Swipe to dismiss

CommonAdapter commonAdapter = new CommonAdapter(mDataList);
mSwipeToDismissWrapper = new SwipeToDismissWrapper(commonAdapter, mDataList);
mSwipeToDismissWrapper.attachToRecyclerView(mRecyclerView);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mSwipeToDismissWrapper);

// Set a listener for a dismissal event.
mSwipeToDismissWrapper.setItemDismissListener(new ItemSwipeCallback.ItemDismissListener() {
    @Override
    public void onItemDismiss(final int position) {
        // TODO
    }
});

SlideItemView

SlideItemView

<?xml version="1.0" encoding="utf-8"?>
<com.yl.recyclerview.widget.SlideItemView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/slide_item"
    android:layout_width="match_parent"
    android:layout_height="40dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        // Item

        <LinearLayout
            android:layout_width="140dp"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            // Function button

        </LinearLayout>

    </LinearLayout>

</com.yl.recyclerview.widget.SlideItemView>

Divider item decoration

Divider item decoration

mDividerAdapter = new DividerAdapter(mDataList);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(linearLayoutManager);
SuperDividerItemDecoration dividerItemDecoration = new SuperDividerItemDecoration(this, linearLayoutManager);
dividerItemDecoration.setDrawable(getResources().getDrawable(R.drawable.custom_bg_divider));
mRecyclerView.addItemDecoration(dividerItemDecoration);
mRecyclerView.setAdapter(mDividerAdapter);

Click / LongClick / Touch

CommonAdapter commonAdapter = new CommonAdapter(mDataList);
mClickWrapper = new ClickWrapper(commonAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mClickWrapper);

mClickWrapper.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(View view, int position) {
        // TODO
    }
});
mClickWrapper.setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(View view, int position) {
        // TODO
        return true;
    }
});
mClickWrapper.setOnItemTouchListener(new OnItemTouchListener() {
    @Override
    public boolean onItemTouch(View view, MotionEvent event, int position) {
        // TODO
        return false;
    }
});

ProGuard

If you are using ProGuard you might need to add the following option:

-keep class com.yl.recyclerview.** {
    *;
}

License

Copyright (C) 2019 YangLe

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Extension points exported contracts — how you extend this code

OnItemClickListener (Interface)
Interface definition for a callback to be invoked when a view is clicked. Created by yangle on 2018/11/29. Website:h [3 …
recyclerview-helper-library/src/main/java/com/yl/recyclerview/listener/OnItemClickListener.java
OnItemClickListener (Interface)
Click callback interface. [3 implementers]
recyclerview-helper-sample/src/main/java/com/yl/sample/adapter/MainAdapter.java
ItemDismissListener (Interface)
Interface to listen for a dismissal event from a ItemTouchHelper.Callback. [2 implementers]
recyclerview-helper-library/src/main/java/com/yl/recyclerview/helper/ItemSwipeCallback.java
ItemMoveListener (Interface)
Interface to listen for a move event from a ItemTouchHelper.Callback. [1 implementers]
recyclerview-helper-library/src/main/java/com/yl/recyclerview/helper/ItemMoveCallback.java
OnItemLongClickListener (Interface)
Interface definition for a callback to be invoked when a view has been clicked and held.. Created by yangle on 2018/ [1 …
recyclerview-helper-library/src/main/java/com/yl/recyclerview/listener/OnItemLongClickListener.java
OnItemTouchListener (Interface)
Interface definition for a callback to be invoked when a touch event is dispatched to this view. The callback will be in [1 …
recyclerview-helper-library/src/main/java/com/yl/recyclerview/listener/OnItemTouchListener.java

Core symbols most depended-on inside this repo

getHeaderViewCount
called by 8
recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/HeaderAndFooterWrapper.java
onItemClick
called by 5
recyclerview-helper-sample/src/main/java/com/yl/sample/adapter/MainAdapter.java
setLoadStateNotify
called by 4
recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/LoadMoreWrapper.java
dp2px
called by 4
recyclerview-helper-sample/src/main/java/com/yl/sample/utils/DensityUtils.java
getData
called by 4
recyclerview-helper-sample/src/main/java/com/yl/sample/activity/LoadMoreActivity.java
isLastRow
called by 3
recyclerview-helper-library/src/main/java/com/yl/recyclerview/widget/SuperDividerItemDecoration.java
getItemViewCount
called by 3
recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/HeaderAndFooterWrapper.java
getFooterViewCount
called by 3
recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/HeaderAndFooterWrapper.java

Shape

Method 175
Class 31
Interface 6

Languages

Java100%

Modules by API surface

recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/HeaderAndFooterWrapper.java17 symbols
recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/LoadMoreWrapper.java15 symbols
recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/DragAndDropWrapper.java12 symbols
recyclerview-helper-library/src/main/java/com/yl/recyclerview/widget/SuperDividerItemDecoration.java12 symbols
recyclerview-helper-sample/src/main/java/com/yl/sample/adapter/MainAdapter.java11 symbols
recyclerview-helper-library/src/main/java/com/yl/recyclerview/wrapper/ClickWrapper.java11 symbols
recyclerview-helper-sample/src/main/java/com/yl/sample/activity/LoadMoreActivity.java10 symbols
recyclerview-helper-sample/src/main/java/com/yl/sample/activity/ClickActivity.java9 symbols
recyclerview-helper-library/src/main/java/com/yl/recyclerview/helper/ItemSwipeCallback.java9 symbols
recyclerview-helper-library/src/main/java/com/yl/recyclerview/helper/ItemMoveCallback.java9 symbols
recyclerview-helper-sample/src/main/java/com/yl/sample/adapter/SlideItemAdapter.java8 symbols
recyclerview-helper-sample/src/main/java/com/yl/sample/activity/SwipeToDismissActivity.java8 symbols

For agents

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

⬇ download graph artifact