{"id":13642764,"url":"https://github.com/iwgang/FamiliarRecyclerView","last_synced_at":"2025-04-20T20:32:49.395Z","repository":{"id":57720311,"uuid":"46228549","full_name":"iwgang/FamiliarRecyclerView","owner":"iwgang","description":"一个如你熟悉ListView、GridView一样熟悉的RecyclerView","archived":false,"fork":false,"pushed_at":"2021-10-08T13:51:14.000Z","size":1906,"stargazers_count":369,"open_issues_count":8,"forks_count":81,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-05T18:08:33.053Z","etag":null,"topics":["android-library","recyclerview"],"latest_commit_sha":null,"homepage":null,"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/iwgang.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":"2015-11-15T17:43:23.000Z","updated_at":"2024-10-18T14:34:57.000Z","dependencies_parsed_at":"2022-08-25T15:03:18.863Z","dependency_job_id":null,"html_url":"https://github.com/iwgang/FamiliarRecyclerView","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwgang%2FFamiliarRecyclerView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwgang%2FFamiliarRecyclerView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwgang%2FFamiliarRecyclerView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwgang%2FFamiliarRecyclerView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iwgang","download_url":"https://codeload.github.com/iwgang/FamiliarRecyclerView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249959158,"owners_count":21351776,"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","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":["android-library","recyclerview"],"created_at":"2024-08-02T01:01:35.967Z","updated_at":"2025-04-20T20:32:45.095Z","avatar_url":"https://github.com/iwgang.png","language":"Java","funding_links":[],"categories":["RecyclerView"],"sub_categories":[],"readme":"[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-FamiliarRecyclerView-green.svg?style=true)](https://android-arsenal.com/details/1/2829)\n[![@iwgang](https://img.shields.io/badge/weibo-%40iwgang-blue.svg)](http://weibo.com/iwgang)\n\n# FamiliarRecyclerView\n这是一个如你熟悉ListView、GridView一样熟悉的RecyclerView类库，你可以用以前使用ListView / GridView的习惯来使用RecyclerView，这些可让你将项目原有的ListView / GridView / 瀑布流 迁移到RecyclerView时减少许多工作量.\n\n### 效果图\n![](https://raw.githubusercontent.com/iwgang/FamiliarRecyclerView/master/screenshot/screenshot.gif)  \n\n### gradle\n```\n// androidx\nimplementation 'com.github.iwgang:familiarrecyclerview:1.3.5'\n\n// android.support\nimplementation 'com.github.iwgang:familiarrecyclerview:1.3.4'\n```\n\n### 这些是不是很熟悉？\n```\n// 添加/删除 头部View (支持多个)\nmRecyclerView.addHeaderView() 和 .removeHeaderView()\n\n// 添加/删除 底部View (支持多个)\nmRecyclerView.addFooterView() 和 .removeFooterView()\n\n// 设置分割线（也可以在布局文件中直接指定分割线Divider及分割线大小，当然你也可以使用自己的分割线实现）\nmRecyclerView.setDivider() 如果是网格或瀑布流视图，你甚至可以设置横竖不同的分割线Divider及分割线大小\n\n// 设置数据空View（设置isRetainShowHeadOrFoot为true时，可以让显示EmptyView时不会清除掉添加的HeadView和FooterView）\nmRecyclerView.setEmptyView()\n\n// Item单击事件\nmRecyclerView.setOnItemClickListener(new FamiliarRecyclerView.OnItemClickListener() {\n    @Override\n    public void onItemClick(FamiliarRecyclerView familiarRecyclerView, View view, int position) {\n        // ...\n    }\n});\n\n// Item长按事件\nmRecyclerView.setOnItemLongClickListener(new FamiliarRecyclerView.OnItemLongClickListener() {\n    @Override\n    public boolean onItemLongClick(FamiliarRecyclerView familiarRecyclerView, View view, int position) {\n        return true;\n    }\n});\n\n// 设置滚动到顶部或底部时的事件回调\nmRecyclerView.setOnScrollListener(new FamiliarRecyclerViewOnScrollListener(mRecyclerView.getLayoutManager()) {\n    @Override\n    public void onScrolledToTop() {\n        // top\n    }\n\n    @Override\n    public void onScrolledToBottom() {\n        // bottom\n    }\n});\n```\n\n\n另外新增了\n简易Adapter [另提供一个用于DataBinding中的通用Adapter](https://github.com/iwgang/FamiliarRecyclerView/blob/master/app/src/main/java/cn/iwgang/familiarrecyclerviewdemo/DataBindingAdapter.java)\n```\nmAdapter = new FamiliarEasyAdapter\u003cUserInfo\u003e(this, R.layout.item_view, data) {\n    @Override\n    public void onBindViewHolder(ViewHolder holder, int position) {\n        TextView tvName = holder.findView(R.id.tv_name);\n        tvName.setText(mAdapter.getData(position).getName());\n    }\n};\n\n等...\n当然，RecyclerView原有的那些全部都能正常使用的\n```\n\n### 布局\n``` \n// LinearLayout （ListView）\n\u003ccn.iwgang.familiarrecyclerview.FamiliarRecyclerView\n    android:id=\"@+id/mRecyclerView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:scrollbars=\"vertical\"\n    app:frv_divider=\"#696969\"\n    app:frv_dividerHeight=\"1dp\"\n    app:frv_emptyView=\"@id/tv_empty\"\n    app:frv_layoutManager=\"linear\"\n    app:frv_layoutManagerOrientation=\"vertical\" /\u003e\n    \n// GridLayout （GridView）\n\u003ccn.iwgang.familiarrecyclerview.FamiliarRecyclerView\n    android:id=\"@+id/mRecyclerView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:scrollbars=\"vertical\"\n    app:frv_dividerHorizontal=\"#FFEE00\"\n    app:frv_dividerVertical=\"#FFCCDD\"\n    app:frv_dividerHorizontalHeight=\"10dp\"\n    app:frv_dividerVerticalHeight=\"30dp\"\n    app:frv_itemViewBothSidesMargin=\"20dp\"\n    app:frv_layoutManager=\"grid\"\n    app:frv_layoutManagerOrientation=\"vertical\"\n    app:frv_spanCount=\"3\" /\u003e\n    \n// StaggeredGridLayout （瀑布流）\n\u003ccn.iwgang.familiarrecyclerview.FamiliarRecyclerView\n      android:id=\"@+id/mRecyclerView\"\n      android:layout_width=\"match_parent\"\n      android:layout_height=\"match_parent\"\n      android:scrollbars=\"vertical\"\n      app:frv_divider=\"#EFADEF\"\n      app:frv_dividerHorizontalHeight=\"10dp\"\n      app:frv_dividerVerticalHeight=\"10dp\"\n      app:frv_itemViewBothSidesMargin=\"20dp\"\n      app:frv_layoutManager=\"staggeredGrid\"\n      app:frv_layoutManagerOrientation=\"vertical\"\n      app:frv_spanCount=\"2\" /\u003e\n```\n\n### 下拉刷新 + 加载更多\n在1.3.0版本开始，新增加了FamiliarRefreshRecyclerView来实现下拉刷新及加载更多\n[建议参考示例代码](https://github.com/iwgang/FamiliarRecyclerView/blob/master/app/src/main/java/cn/iwgang/familiarrecyclerviewdemo/ImitateNewListViewDemoActivity.java)\n```\n// 布局 （FamiliarRecyclerView的属性全可以使用，List、Gird、staggeredGrid均可设置）\n\u003ccn.iwgang.familiarrecyclerview.FamiliarRefreshRecyclerView\n    android:id=\"@+id/cv_refreshListRecyclerView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:scrollbars=\"vertical\"\n    app:frv_divider=\"#333333\"\n    app:frv_dividerHeight=\"0.5dp\"\n    app:frv_emptyView=\"@id/tv_empty\"\n    app:frv_isEmptyViewKeepShowHeadOrFooter=\"true\"\n    app:frv_layoutManager=\"linear\"\n    app:frv_layoutManagerOrientation=\"vertical\" /\u003e\n\n// 下拉刷新回调\nmCvRefreshListRecyclerView.setOnPullRefreshListener(...)\n\n// 加载更多回调\nmCvRefreshListRecyclerView.setOnLoadMoreListener(...)\n\n// 设置加载更多的View\nmCvRefreshListRecyclerView.setLoadMoreView(...)\n\n// 设置启动/停用下拉刷新\nmCvRefreshListRecyclerView.setLoadMoreEnabled(true / false);\n\n// 设置启动/停用加载更多\nmCvRefreshListRecyclerView.setPullRefreshEnabled(true / false);\n```\n\n### 自定义配置\n|    参数 | 类型 | 默认值 | 说明|\n|--- | --- | ---| ---|\n|frv_divider                 | reference / color               | 无        | 全局分割线divider|\n|frv_dividerVertical         | reference / color               | 无        | 垂直分割线divider|\n|frv_dividerHorizontal       | reference / color               | 无        | 水平分割线divider|\n|frv_dividerHeight           | dimension                      | 1px       | 全局分割线size|\n|frv_dividerVerticalHeight   | dimension                      | 1px       | 垂直分割线size|\n|frv_dividerHorizontalHeight | dimension                      | 1px       | 水平分割线size|\n|frv_dividerHorizontalLeftMargin | dimension                      | 无       | 水平分割线左边距 |\n|frv_dividerHorizontalRightMargin | dimension                      | 无       | 水平分割线右边距 |\n|frv_dividerVerticalTopMargin | dimension                      | 无       | 垂直分割线上边距 |\n|frv_dividerVerticalBottomMargin | dimension                      | 无       | 垂直分割线下边距 |\n|frv_isNotShowGridEndDivider | boolean                        | false     | 是否不显示Grid最后item的分割线|\n|frv_itemViewBothSidesMargin | dimension                      | 无        | itemView两边的边距（不会设置headerView和footerView的两边）|\n|frv_emptyView               | reference                      | 无        | emptyView id|\n|frv_isEmptyViewKeepShowHeadOrFooter | boolean                | false     | 显示EmptyView时，是否保留显示已设置的HeadView和FooterView|\n|frv_layoutManager           | linear / grid / staggeredGrid  | linear    | 布局类型|\n|frv_layoutManagerOrientation| horizontal / vertical          | vertical  | 布局方向|\n|frv_spanCount               | integer                        | 2         | 格子数量，frv_layoutManager=grid / staggeredGrid时有效|\n|frv_headerDividersEnabled   | boolean                        | false     | 是否启用headView中的分割线|\n|frv_footerDividersEnabled   | boolean                        | false     | 是否启用footerView中的分割线|\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwgang%2FFamiliarRecyclerView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiwgang%2FFamiliarRecyclerView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwgang%2FFamiliarRecyclerView/lists"}