// GridLayoutManager gridLayoutManager=new GridLayoutManager(this,4);
// recyclerView.setLayoutManager(gridLayoutManager);
//创建适配器
adapter = new myAdapter(R.layout.item, datas);
adapter2=new youAdapter(R.layout.grid_item,pictureData);
// adapter2.setAdapterAnimation(new BaseAnimation() {
// @NotNull
// @Override
// public Animator[] animators(@NotNull View view) {
// return new Animator[0];
// }
// });
// 注册子控件点击事件的 button控件按钮
adapter.addChildClickViewIds(R.id.button);
adapter2.addChildClickViewIds(R.id.img,R.id.tV);
// item 点击监听
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull @NotNull BaseQuickAdapter<?, ?> adapter, @NonNull @NotNull View view, int position) {
Toast.makeText(MainActivity.this, "你点击了第" + (position + 1) + "条信息", Toast.LENGTH_SHORT).show();
}
});
// item长按监听
adapter.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(@NonNull @NotNull BaseQuickAdapter adapter, @NonNull @NotNull View view, int position) {
Toast.makeText(MainActivity.this, "你长按了第" + (position + 1) + "条信息", Toast.LENGTH_SHORT).show();
return false;
}
});
// Listview 中item的点击事件监听
adapter.setOnItemChildClickListener(new OnItemChildClickListener() {
@Override
public void onItemChildClick(@NonNull @NotNull BaseQuickAdapter adapter, @NonNull @NotNull View view, int position) {
Toast.makeText(MainActivity.this, "你点击了" + (position + 1) + "button按钮", Toast.LENGTH_SHORT).show();
}
});
// 两个 adapter2 事件
adapter2.setOnItemChildClickListener(new OnItemChildClickListener() {
@Override
public void onItemChildClick(@NonNull @NotNull BaseQuickAdapter adapter, @NonNull @NotNull View view, int position) {
switch (view.getId()){
case R.id.img:
Toast.makeText(MainActivity.this,"你点击了"+(position+1)+"图片",Toast.LENGTH_SHORT).show();
break;
case R.id.tV:
Toast.makeText(MainActivity.this,"你点击了"+(position+1)+"文字",Toast.LENGTH_SHORT).show();
break;
}
}
});
//给RecyclerView设置适配器
recyclerView.setAdapter(adapter);
recyclerView2.setAdapter(adapter2);
adapter.notifyDataSetChanged();
}
}
---
### 🍄🍄Person.java【Person对象类】
package com.example.domain;
public class Person {
public int id;
public String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
---
### 🍄🍄Pictures.java【Picture对象类】
package com.example.domain;
public class Pictures {
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
---
---
## 🍓🍓BRVAH 下部
---
### 🍎🍎自定义动画
**`效果图》》》`**
// 第二个布局添加自定义动画
adapter2.setAdapterAnimation(new BaseAnimation() {
@NotNull
@Override
public Animator[] animators(@NotNull View view) {
return new Animator[]{
ObjectAnimator.ofFloat(view, “scaleY”, 1, 0.1f, 1),
ObjectAnimator.ofFloat(view, “scaleX”, 1, 0.1f, 1)
};
}
});
>
> **默认执行一次,想要反复执行可以自行设置。记得这段要添加在MainActivity.java的adapter2 new出来之后,setAdapter之前**
> **`空余时间别忘记了看看源码`~~~**
> ![在这里插入图片描述](https://img-blog.csdnimg.cn/0f76fb04ec8b4a04bd37a93263c8f3d1.png)
>
>
>
---
### 🍎🍎空布局
**`说明:当adapter中数据不为空时,空布局不会生效`**
>
> **通过设置View为空布局
> 代码如下:**
>
>
>
View view = …
adapter.setEmptyView(view);
>
> **通过设置LayoutResId为空布局
> 代码如下:**
>
>
>
adapter.setEmptyView(R.layout.loading_view);
>
> **设置是否使用空布局(默认为true)
> 代码如下:**
>
>
>
// java
adapter.setUseEmpty(false);
// kotlin
adapter.isUseEmpty = false
---
### 🍎🍎头部
>
> **`说明:此头部并不是item的头部,而是整个Adapter的头部`**
> **代码如下:**
>
>
>
View view = …;
adapter.addHeaderView(view);
// 指定添加位置
adapter.addHeaderView(view, 1);
// 替换头部
adapter.setHeaderView(view);
//替换指定位置头部
adapter.setHeaderView(view, 0);
// 移除头部
adapter.removeHeaderView(view);
// 移除全部头部
adapter.removeAllHeaderView();
---
### 🍎🍎头部
>
> `说明:此脚部不是item的脚部,而是整个Adapter的`
> **代码如下:**
>
>
>
View view = …;
adapter.addFooterView(view);
// 指定添加位置
adapter.addFooterView(view, 1);
// 替换脚部
adapter.setFooterView(view);
//替换指定位置脚部
adapter.setFooterView(view, 0);
// 移除脚部
adapter.removeFooterView(view);
// 移除全部脚部
adapter.removeAllFooterView();
---
**是不是还是不太尽兴,那就来看看Github的详细解释吧。**
[BaseRecyclerViewAdapterHelper]( ) **使用详情页**
**`BaseQuickAdapter主要属性、方法说明`**
| 空 | Java | Kotlin | 说明 |
| --- | --- | --- | --- |
| 获取Context | getContext() | context | |
| **数据相关** | | | |
| 获取Adapter中数据 | getData() | data | 只能get |
| 设置新的数据实例 | setNewData() | setNewData() | 将会替换List指针引用 |
| 添加数据 | addData() | addData() | |
| 移除数据 | remove() | remove() | |
| 改变某一位置的数据 | setData() | setData() | |
| 替换整个数据 | replaceData() | replaceData() | 不会更改原数据的引用 |
| 设置Diff数据(异步,推荐) | setDiffCallback() | setDiffCallback() | 配置数据差异化比较的Callback |
| ~ | setDiffConfig() | setDiffConfig() | 更高程度的自定义化配置 |
| ~ | setDiffNewData(List) | setDiffNewData(List?) | 必须先设置setDiffCallback() 或者 setDiffConfig(),否则不生效 |
| 设置Diff数据 | setDiffNewData(DiffResult, List) | setDiffNewData(DiffResult, List?) | 通过DiffResult设置数据,Adapter内部不关心Diff过程,只要结果。 |
| **空布局** | | | |
| 设置空布局视图 | setEmptyView() | setEmptyView() | 仅当 data 为空时,才会显示 |
| 是否有空视图 | hasEmptyView() | hasEmptyView() | |
| 获取空视图 | getEmptyLayout() | getEmptyLayout() | |
| 是否使用空布局 | setUseEmpty() | isUseEmpty | |
| **头布局** | | | |
| 添加头布局 | addHeaderView() | addHeaderView() | |
| 设置头布局 | setHeaderView() | setHeaderView() | |
| 是否有头布局 | hasHeaderLayout() | hasHeaderLayout() | |
| 移除头布局 | removeHeaderView() | removeHeaderView() | |
| 移除所有头布局 | removeAllHeaderView() | removeAllHeaderView() | |
| **脚布局** | | | |
| 添加脚布局 | addFooterView() | addFooterView() | |
| 设置脚布局 | setFooterView() | setFooterView() | |
| 是否有脚布局 | hasFooterLayout() | hasFooterLayout() | |
| 移除脚布局 | removeFooterView() | removeFooterView() | |
| 移除所有脚布局 | removeAllFooterView() | removeAllFooterView() | |
| **布局其他属性** | | | |
| 当显示空布局时,是否显示 头布局 | setHeaderWithEmptyEnable() | headerWithEmptyEnable | |
| 当显示空布局时,是否显示 脚布局 | setFooterWithEmptyEnable() | footerWithEmptyEnable | |
| **点击事件** | | | |
| item点击事件 | setOnItemClickListener() | 同java | |
| item长按事件 | setOnItemLongClickListener | 同java | |
| item子view的点击事件 | setOnItemChildClickListener | 同java | |
| item子view的长按事件 | setOnItemChildLongClickListener | 同java | |
| 添加需要响应点击事件的子View id | addChildClickViewIds() | 同java | 添加以后,setOnItemChildClickListener才会响应 |
| 添加需要响应长按事件的子View id | getChildLongClickViewIds() | 同java | |
| **动画** | | | |
| 是否打开动画 | setAnimationEnable() | animationEnable | 默认:false |
| 动画是否仅第一次执行 | setAnimationFirstOnly() | isAnimationFirstOnly | |
| 设置自定义动画 | setAdapterAnimation() | adapterAnimation | |
| 设置使用内置默认动画 | setAnimationWithDefault() | setAnimationWithDefault() | 参数为枚举 |
![img](https://img-blog.csdnimg.cn/img_convert/9f1dea0294d799d8535d03edbf2a353a.png)
![img](https://img-blog.csdnimg.cn/img_convert/03ac0b8d6b0c8deb8aa4fd90a4f37aa9.png)
![img](https://img-blog.csdnimg.cn/img_convert/0228b0c5c8e1cd9dc08ca5bf3de17011.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
动画是否仅第一次执行 | setAnimationFirstOnly() | isAnimationFirstOnly | |
| 设置自定义动画 | setAdapterAnimation() | adapterAnimation | |
| 设置使用内置默认动画 | setAnimationWithDefault() | setAnimationWithDefault() | 参数为枚举 |
[外链图片转存中...(img-MHug3fK4-1725715051749)]
[外链图片转存中...(img-cY9iDzxk-1725715051750)]
[外链图片转存中...(img-tBoff0ag-1725715051750)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**