{"id":21823488,"url":"https://github.com/limedroid/arecyclerview","last_synced_at":"2025-08-21T04:31:17.254Z","repository":{"id":50461500,"uuid":"72443593","full_name":"limedroid/ARecyclerView","owner":"limedroid","description":"一个库搞定recyclerview","archived":false,"fork":false,"pushed_at":"2019-12-11T08:39:04.000Z","size":1435,"stargazers_count":186,"open_issues_count":15,"forks_count":56,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-30T18:13:45.031Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/limedroid.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-31T14:20:12.000Z","updated_at":"2025-03-23T08:41:43.000Z","dependencies_parsed_at":"2022-09-06T17:20:57.570Z","dependency_job_id":null,"html_url":"https://github.com/limedroid/ARecyclerView","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/limedroid/ARecyclerView","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FARecyclerView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FARecyclerView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FARecyclerView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FARecyclerView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/limedroid","download_url":"https://codeload.github.com/limedroid/ARecyclerView/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FARecyclerView/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271425075,"owners_count":24757404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-27T17:32:23.401Z","updated_at":"2025-08-21T04:31:16.821Z","avatar_url":"https://github.com/limedroid.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ARecyclerView\n\n对RecyclerView的封装，功能强大、使用简单、扩展性强。该库主要分成三部分：**RecyclerAdapter**、**XRecyclerView**、**XRecyclerContentLayout**\n\n\n\u003e该库在商业项目中历经一年多时间打磨，欢迎star、fork，后期会有更多分享，期待您的建议和关注。\n\n**本库已经迁移到JitPack**\n\n[![](https://jitpack.io/v/limedroid/ARecyclerView.svg)](https://jitpack.io/#limedroid/ARecyclerView)\n\n\n## 说明\n\n关于RecyclerView，有很多库。ARecyclerView与其他库有这几个区别，也许能更好的进行扩展，方便您的使用。\n\n* **ARecyclerView继承自RecyclerView，它就是一个封装了常见功能的RecyclerView，而不是继承FrameLayout**\n* **ARecyclerView中实现了Header、Footer，header和Footer可以有多个**\n* **ARecyclerView的每一个header、footer的viewType是不同的，而大部分开源库的header、footer的viewtype是相同的，其直接后果是界面卡顿**\n* **ARecyclerView可以做出几乎任何的界面效果，可以取代ScrollView，你只需要使用header或者footer**\n* **ARecyclerView中实现了上拉加载更多，可以自定义加载更多的效果，只需要实现LoadMoreUIHandler接口即可**\n* **ARecyclerView并未实现下拉刷新功能，您可以选择SwipeRefreshLayout或者其他的下拉刷新viewGroup包裹，即你可以自由选择下拉刷新功能的实现。**\n* **为了方便自定义使用，特别集成了XRecyclerContentLayout控件，你可以根据业务进行扩展，XRecyclerContentLayout只是一个示例，当然也可以满足绝大部分需求了**\n* **欢迎您提出宝贵的意见**\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"art/xrecyclerview.gif\" alt=\"XRecyclerView\" /\u003e\n\u003c/p\u003e\n\n\n## 使用\n\n* Github ： [**ARecyclerView**](https://github.com/limedroid/ARecyclerView)\n\n### step1 \n\n在根项目的`build.gradle`文件中添加\n\n```groovy\nallprojects {\n\t\trepositories {\n\t\t\t...\n\t\t\tmaven { url 'https://jitpack.io' }\n\t}\n}\n```\n\n### step2\n\n添加依赖\n\n```groovy\ndependencies {\n\t   compile 'com.github.limedroid:ARecyclerView:v1.2.1'\n}\n```\n\n\n## 更新日志\n\n* v1.2.1\n\t* 添加setGridSpanLookUp方法\n\n* v1.1.0  2017年1月22日\n\t* 增加refresh与loadmore的互斥判断\n\t* 修复禁止刷新的bug\n\n\n## RecyclerAdapter\n\nRecyclerAdapter简化了Adapter的开发，封装了一些常用的逻辑，包括数据集合操作、接口监听RecyclerItemCallback可以满足99%的需求。\n\n### 使用示例\n\n```java\npublic class TestRecAdapter extends RecyclerAdapter\u003cTestRecAdapter.Item, TestRecAdapter.ViewHolder\u003e {\n\n\t@Override\n    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {\n      \n    }\n\n\t@Override\n    public void onBindViewHolder(ViewHolder holder, int position) {\n        \n    }\n}\n```\n\n\n## XRecyclerView\n\nXRecyclerView是对RecyclerView的封装，其主要特性包括:\n\n* 一行代码添加、删除、修改Header或者Footer\n* 一行代码添加默认的上拉加载效果\n* 一行代码切换自定义上拉加载效果\n* 一行代码轻松添加LayoutManager\n* 一行代码添加divider\n* Adapter规范及封装**RecyclerAdapter**\n\n### 使用示例\n\n```java\nrecyclerView.verticalLayoutManager(this)        //设置layoutManager\n            .setAdapter(adapter);                   //设置Adapter\nrecyclerView.horizontalDivider(R.color.x_red, R.dimen.divider_height);  //设置divider\nrecyclerView.setOnRefreshAndLoadMoreListener(new XRecyclerView.OnRefreshAndLoadMoreListener() { //设置刷新和上拉加载监听\n            @Override\n            public void onRefresh() {\n                loadData(1);\n            }\n\n            @Override\n            public void onLoadMore(int page) {\n                loadData(page);\n            }\n        });\nrecyclerView.useDefLoadMoreView();      //使用默认的上拉刷新样式\nrecyclerView.addHeaderView(headView);       //添加header\nrecyclerView.addFooterView(footview);       //添加footer\nrecyclerView.removeHeaderView(headview);    //删除header\nrecyclerView.removeFooterView(footview);    //删除footer\nrecyclerView.setRefreshEnabled(true);\t//设置是否可下拉刷新\n```\n\n## XRecyclerContentLayout\n\nXRecyclerContentLayout继承了[**XStateController**](https://github.com/limedroid/XStateController)，可自定义Loading、Error、Empty、Content四种显示状态，满足了绝大部分需求.\n\n### 使用示例\n\n```xml\n\u003ccn.droidlover.xrecyclerview.XRecyclerContentLayout\n        android:id=\"@+id/contentLayout\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        app:recyclerBackgroundColor=\"#f5f5f5\"\n        app:recyclerScrollbarNone=\"true\"\n        app:recyclerScrollbarStyle=\"outsideOverlay\" /\u003e\n```\n\n```java\ncontentLayout.loadingView(new LoadingView(this));\n             .errorView(new ErrorView(this));\n             .emptyView(new EmptyView(this));\n\ncontentLayout.showLoading();\ncontentLayout.showError();\ncontentLayout.showEmpty();\ncontentLayout.showContent();\n```\n\n### 自定义LoadMoreView的实现\n\n自定义LoaderMoreView只需实现LoadMoreUIHandler接口，然后调用xrecyclerView的loadMoreFooterView(loadMoreView)方法即可。\n\n```java\n @Override\n    public void onLoading() {\n        setVisibility(VISIBLE);\n        tvMsg.setText(\"加载中\");\n        progressBar.setVisibility(VISIBLE);\n    }\n\n    @Override\n    public void onLoadFinish(boolean hasMore) {\n        if (hasMore) {\n            setVisibility(GONE);\n        } else {\n            setVisibility(VISIBLE);\n            tvMsg.setText(\"没有更多数据\");\n            progressBar.setVisibility(GONE);\n        }\n    }\n```\n设置loadMoreView\n```java\nrecyclerView.loadMoreFooterView(loadMoreView);\n```\n\n### 自定义实现XRecyclerContentLayout\n\n在XRecyclerContentLayout中内置了SwipeRefreshLayout下拉刷新样式，您也可以自定义实现XRecyclerContentLayout，只需实现XRecyclerView.StateCallback接口即可.\n\n```java\npublic interface StateCallback {\n        void notifyEmpty();     //数据为空\n\n        void notifyContent();   //显示contentview\n\n        void refreshState(boolean isRefresh);   //更新刷新状态\n\n        void refreshEnabled(boolean isEnabled); //刷新是否可用\n    }\n```\n\n***详情demo可见app module。***\n\n## 相关库\n\n* [XStateController](https://github.com/limedroid/XStateController) 最完美的状态控制机，支持loading、error、empty、content四种状态的自定义动画切换\n\n## 关于我\n\n**Email** : droidlover@126.com\n\n \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimedroid%2Farecyclerview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimedroid%2Farecyclerview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimedroid%2Farecyclerview/lists"}