#Android_RecyclerView_嵌套
Android-学习-016-RecyclerView嵌套RecyclerView点击事件实例-2020-4-26
代码来源,例子很好
https://www.jianshu.com/p/eab9d2019cda https://github.com/a824676719/RecycleNestDemo
如果懒的改,或者有问题不知道怎么改,我改后的
https://github.com/zhengduolctao/Android_RecyclerView_QianTao
推荐去看一下他的博客,去下载代码包 我只做分析
@TOC
(我以Empty Activity修改)
Bean类用来存储返回数据
GridSpacingItemDecoration类一个动态设置item个数,间距的工具类
RvAdapter类最外层RecyclerView的适配器
RvvAdapter类最内层RecyclerView的适配器
MainActivity类:新建数据,主类
activity_main.xml 放置一个recyclerview
item_detail_list.xml(原名item_detaillist)外层recyclerview
item_detail_option.xml 内层recyclerview
background_grid_select.xml 选中时选项外框样式
background_grid_unselect.xml 未选中时选项外框样式
colors.xml 颜色
当你下载了上面代码 问题:The given artifact contains a string literal with a package reference 'andro
问题:Static interface methods are only supported starting with Android N (--min-api 24): void butterkn
问题: Error inflating class RecyclerView
因为那篇博客旧,版本要更新 我就那个代码包进行修改,新建一个Empty Activity,然后copy
activity_main.xml和item_detail_list.xml(原名item_detaillist.xml)
android.support.v7.widget.RecyclerView
改为
androidx.recyclerview.widget.RecyclerView
build.gradle(Module:app)->dependencise
implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
implementation 'com.yqritc:recyclerview-flexibledivider:1.4.0'
implementation "androidx.recyclerview:recyclerview:1.1.0"
implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
原 MainActivity.java 里的initdata
private void initdata() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
c_RecyclerView.setLayoutManager(layoutManager);
c_RecyclerView.setFocusableInTouchMode(false);
mBean = new Bean();
List<Bean.DatasBean> datas = new ArrayList<>();
//模拟一些数据
for (int i = 0; i < 20; i++) {
Bean.DatasBean datasBean = new Bean.DatasBean();
List<Bean.DatasBean.Option> option = new ArrayList<>();
Bean.DatasBean.Option optionBean = new Bean.DatasBean.Option();
optionBean.setDatas("这是选项" + i);
option.add(optionBean);
Bean.DatasBean.Option optionBean1 = new Bean.DatasBean.Option();
optionBean1.setDatas("这是选项" + (i + 1));
option.add(optionBean1);
Bean.DatasBean.Option optionBean2 = new Bean.DatasBean.Option();
optionBean2.setDatas("这是选项" + (i + 2));
option.add(optionBean2);
Bean.DatasBean.Option optionBean3 = new Bean.DatasBean.Option();
optionBean3.setDatas("这是选项" + (i + 3));
option.add(optionBean3);
datasBean.setOptions(option);
datasBean.setTitle("这是标题哦1");
datas.add(datasBean);
}
mBean.setDatas(datas);
mRvAdapter = new RvAdapter(this, mBean.getDatas());
c_RecyclerView.setAdapter(mRvAdapter);
mRvAdapter.notifyDataSetChanged();
}
改后MainActivity.java 里的initdata
private void initdata() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
c_RecyclerView.setLayoutManager(layoutManager);
c_RecyclerView.setFocusableInTouchMode(false);
mBean = new Bean();
List<Bean.DatasBean> datas = new ArrayList<>();
//模拟一些数据
//for (int i = 0; i < 20; i++) {
Bean.DatasBean datasBean = new Bean.DatasBean();
List<Bean.DatasBean.Option> option = new ArrayList<>();
Bean.DatasBean.Option optionBean = new Bean.DatasBean.Option();
optionBean.setDatas("这是选项" + 1);
option.add(optionBean);
Bean.DatasBean.Option optionBean4 = new Bean.DatasBean.Option();
optionBean4.setDatas("这是选项" + 2);
option.add(optionBean4);
datasBean.setOptions(option);
datasBean.setTitle("这是标题哦" + 1);
datas.add(datasBean);
Bean.DatasBean datasBean1 = new Bean.DatasBean();
List<Bean.DatasBean.Option> option1 = new ArrayList<>();
Bean.DatasBean.Option optionBean1 = new Bean.DatasBean.Option();
optionBean1.setDatas("这是选项" + 3);
option1.add(optionBean1);
Bean.DatasBean.Option optionBean2 = new Bean.DatasBean.Option();
optionBean2.setDatas("这是选项" + 4);
option1.add(optionBean2);
Bean.DatasBean.Option optionBean3 = new Bean.DatasBean.Option();
optionBean3.setDatas("这是选项" + 5);
option1.add(optionBean3);
datasBean1.setOptions(option1);
datasBean1.setTitle("这是标题哦" + 2);
datas.add(datasBean1);
//}
mBean.setDatas(datas);
mRvAdapter = new RvAdapter(this, mBean.getDatas());
c_RecyclerView.setAdapter(mRvAdapter);
mRvAdapter.notifyDataSetChanged();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型