androidx viewpager2的使用详解,想进BTAJ

本文详细介绍了如何在Android应用中使用ViewPager2,包括设置滑动方向、创建Adapter以及绑定数据。通过示例代码展示了如何创建自定义的RecyclerView.Adapter子类,并提供了面试相关的知识点和高级架构技术进阶资源,帮助开发者提升技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • @param adapter The adapter to use, or {@code null} to remove the current adapter

  • @see androidx.viewpager2.adapter.FragmentStateAdapter

  • @see RecyclerView#setAdapter(Adapter)

*/

public void setAdapter(@Nullable @SuppressWarnings(“rawtypes”) Adapter adapter) {

final Adapter<?> currentAdapter = mRecyclerView.getAdapter();

mAccessibilityProvider.onDetachAdapter(currentAdapter);

unregisterCurrentItemDataSetTracker(currentAdapter);

mRecyclerView.setAdapter(adapter);

mCurrentItem = 0;

restorePendingState();

mAccessibilityProvider.onAttachAdapter(adapter);

registerCurrentItemDataSetTracker(adapter);

}

描述的意思 大概是使用RecyclerView 的 dapter,在了解了使用方法以后,于是就开始体验一下吧!

@FindView(R.id.splash_viewpage2)

ViewPager2 viewPager2;

设置滑动方向  —> 左右或者上下

viewPager2.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);

ViewPager2的Adapter

public class SplashAdapter extends RecyclerView.Adapter<SplashAdapter.SplashVH> {

private List list;

public SplashAdapter(List list) {

this.list = list;

}

@NonNull

@Override

public SplashVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

View view = ((LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE))

.inflate(R.layout.item_splash_wellcome,pa

rent,false);

return new SplashVH(view);

}

@Override

public void onBindViewHolder(@NonNull SplashVH holder, int position) {

holder.iv_splash_image_center.setBackgroundResource(list.get(position).getIcon());

// holder.imageView.startCountDown();

}

@Override

public int getItemCount() {

return list == null ? 0 : list.size();

}

static class SplashVH extends RecyclerView.ViewHolder{

private ImageView iv_splash_image_center;

private CountDownView countDownView;

public SplashVH(@NonNull View itemView) {

super(itemView);

this.iv_splash_image_center = itemView.findViewById(R.id.iv_splash_image_center);

countDownView = itemView.findViewById(R.id.cdv_splash_number);

}

}

总结

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一线互联网面试专题

379页的Android进阶知识大全

379页的Android进阶知识大全

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。
知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。

### 如何在 Vite React TypeScript 项目中配置 `eslint.config.js` #### 安装必要的依赖 为了使 ESLint 能够正确解析和处理 React 和 TypeScript 文件,在 Vite 项目中需安装如下开发依赖: ```bash npm install -D eslint @babel/eslint-parser eslint-plugin-react eslint-plugin-react-hooks typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin prettier eslint-config-prettier eslint-plugin-prettier ``` 此命令会安装 ESLint 及其 Babel 解析器,React 插件以及针对 TypeScript 的支持工具[^2]。 #### 初始化 ESLint 配置文件 通过运行初始化向导来创建基本的 `.eslintrc.json` 或者其他格式的基础配置文件: ```bash npx eslint --init ``` 这一步骤将引导完成一些选项的选择,以便自动生成适合项目的初始设置[^1]。 #### 创建或修改 `eslint.config.js` 对于希望集中管理配置的应用程序来说,可以直接编辑根目录下的 `eslint.config.js` 文件。下面是一个适用于 Vite + React + TypeScript 组合的例子: ```javascript // eslint.config.js module.exports = { root: true, parser: &#39;@typescript-eslint/parser&#39;, plugins: [&#39;@typescript-eslint&#39;, &#39;react&#39;], extends: [ &#39;plugin:@typescript-eslint/recommended&#39;, &#39;airbnb&#39;, &#39;airbnb/hooks&#39;, &#39;plugin:react/recommended&#39;, &#39;plugin:prettier/recommended&#39; ], settings: { react: { version: &#39;detect&#39; // 自动检测使用的 React 版本 } }, env: { browser: true, es6: true, node: true }, rules: { // 添加特定规则覆盖默认行为 &#39;no-console&#39;: process.env.NODE_ENV === &#39;production&#39; ? &#39;error&#39; : &#39;off&#39;, &#39;max-len&#39;: [&#39;warn&#39;, { code: 100 }], ...require(&#39;@typescript-eslint/eslint-plugin&#39;).configs.recommended.rules, // 导入推荐的 TS 规则集 &#39;import/extensions&#39;: [ &#39;error&#39;, &#39;ignorePackages&#39;, { js: &#39;never&#39;, jsx: &#39;never&#39;, ts: &#39;never&#39;, tsx: &#39;never&#39; } ] }, overrides: [ { files: [&#39;*.ts&#39;, &#39;*.tsx&#39;], // 对 .ts/.tsx 文件应用额外规则 rules: { &#39;@typescript-eslint/explicit-function-return-type&#39;: &#39;off&#39;, &#39;@typescript-eslint/no-explicit-any&#39;: &#39;off&#39; } } ] }; ``` 上述配置引入了多个插件并扩展了一些流行的风格指南,同时也调整了几项常见规则以适应现代 JavaScript/TypeScript 开发实践的需求。 #### 整合 Prettier 为了让代码格式化更加统一美观,可以在同一个配置文件里集成 Prettier 来负责最终的代码样式修正工作。确保已经按照前述步骤安装好了 `eslint-config-prettier` 和 `eslint-plugin-prettier` 后,只需简单地将其加入到 `extends` 数组即可启用它们的功能。 #### 测试配置有效性 最后不要忘记测试新建立起来的 Linter 设置是否正常运作。可以通过执行以下命令来进行快速验证: ```bash npx eslint . ``` 这条指令会对当前目录及其子目录中的所有源码进行静态分析,并报告任何违反既定编码标准的地方[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值