问题标签 [epoxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
236 浏览

android - MvRX DrawerLayout + 通常需要更多示例

我正在尝试在 MvRx 示例项目中设置 DrawerLayout,但我有点卡住了。

一般来说,环氧树脂和 MvRx 都是全新的,我已经玩了一个星期了,现在学习了将我们的应用程序转换为 MvRx 所需的框架和测试组件。

我想知道的是如何使用 MvRx 设置 DrawerLayout 视图。

当前的示例对于新手来说也非常全面。任何人有一个极简的启动器可用?

// JQ

0 投票
1 回答
195 浏览

android - 环氧树脂视图中的谷歌地图片段

我目前正在探索 Airbnb 的新MvRx堆栈

现在我正在将谷歌地图片段成功添加到 BottomNavigationView 中的 BaseMvRxFragment。

问题是 2. 当我导航到 MapFragment 我的应用程序崩溃时,我收到以下错误消息:

MapFragment.kt

地图视图.kt

view_map.xml

谢谢你的帮助!<3

0 投票
0 回答
99 浏览

android - Airbnb Epoxy For Gmail 类似仪表板界面

正在构建一个显示对象列表的应用程序。我现在正在使用 android recycler 视图。

现在根据新要求,我想按组显示此列表,类似于本问题中所述

我的问题是:

  1. 我可以使用Airbnb Epoxy来实现它吗?
  2. 环氧树脂会过大吗?
  3. 还是我应该只使用 SO 问题中提供的解决方案?

请指教。谢谢 !

0 投票
0 回答
205 浏览

android - 如何用airbnb环氧树脂做UI测试?

目前我正在一个使用环氧树脂的项目中工作,我很难思考如何用它创建 UI/集成测试。在 Epoxy github 的存储库中,我只有一个关于测试 RecyclerView 的提示,但我认为这不是最好的方法。

你能给我一些建议吗?

谢谢 :)

0 投票
1 回答
1480 浏览

android - 启用视图状态保存时,如何正确初始化 Epoxy ModelView 中的属性?

我有以下模型视图的代码。

当我禁用saveViewState = true或删除它时,checkbox?.isChecked由环氧树脂适配器正确设置(根据isChecked传递给注释方法的布尔值设置为真或假)。但是,当我启用它(设置saveViewState = true)时,该checkbox?.isChecked值始终设置为 false(至少在我在 UI 中看到的那样,所有复选框都未选中)。

前后放了log this.checkbox?.isChecked = isChecked,看到传递的值是正确的,checkboxisChecked属性设置正确。我不明白的是为什么环氧树脂会覆盖所有这些并将复选框设置为未选中状态(为假),尽管它的属性设置为例如选中状态。我试图requestModelBuild在模型构建后立即对环氧树脂视图进行处理,并且有一些延迟,但这没有帮助。

启用视图状态后,如何在环氧树脂模型视图中设置复选框状态?使用 EditText 时是否也会出现此问题?以及为什么正确填充了复选框标签(没有空文本,传递的文本按原样显示)?

0 投票
0 回答
69 浏览

android - 增加 MaxRecycledViews 对 Recyclerview 性能有影响吗?

我有一个Recyclerview包含多个项目的详细信息屏幕,它具有不同的项目类型,NestedScrollviewRecylcerview不是实现

为我们提供更快的页面加载时间以及简单的动画。

但是,有一个项目类型被onCreateViewHolder多次调用,因为它有超过 5 个实例,5 是默认数量,MaxRecycledViews据我所知,它onCreateViewHolder正在再次膨胀视图,这会导致性能问题。
我想知道我增加的数量是否MaxRecycledViews会导致任何性能问题?因为增加该数字将阻止onCreateViewHolder每次超过 MaxRecycledViews 时调用 此处是我的Recyclerview外观示例:

A
B
C
D
D
D
D
D
D
E
F
G
H

其中字母代表项目类型。所以我的解决方案是通过这样做来增加数量

0 投票
1 回答
574 浏览

android - 环氧树脂:如何使用 @AutoModel 注释并在没有控制器的情况下处理点击?

我开始使用环氧树脂库,因为我正在寻找一个库来在使用RecyclerView组件时编写更少的代码。

EpoxyRecyclerView似乎是一个很棒的组件,因为您可以简单地给出模型(基本上是一个简单的列表),这要归功于该setModels方法。

问题 1

第一个问题是:是否可以在@AutoModel不使用控制器的情况下自动为模型设置 id(使用?)?

例如,我有以下DataBindingEpoxyModel课程:

我在我的Fragment

此代码崩溃,因为我没有设置id实例HeaderModel_()AutoModel注释只能在字段上使用,那么有没有办法在没有控制器的情况下自动为我的模型实例设置一个 id ?

问题2

第二个问题是:是否可以在不使用控制器的情况下处理点击?

使用问题1的代码,如何处理对布局的几个小部件的点击(在我的例子中,点击TextView或点击itemView)?有没有办法覆盖所使用的持有人DataBindingEpoxyModel,以便直接处理点击进入持有人?

就我而言,我不想将 定义OnClickListener为 my 的属性,HeaderModel因为我想为该类型的所有模型定义相同的行为HeaderModel(不使用控制器)。

提前感谢您的帮助!

编辑:我找到了问题 2 的答案。我只需要覆盖bind. DataBindingEpoxyModel但是我没有找到一种方法来自动将 id 设置为没有控制器和@AutoModel注释的模型。

0 投票
1 回答
2339 浏览

android - 如何在airbnb Epoxy中分配网格跨度?

我已经开始学习如何在我的项目中使用 Epoxy。我通过运行示例项目来学习这个库。一切都很好,直到我深入研究网格跨度设置。我发现自己对它的网格系统感到困惑。

在此处输入图像描述

正如您在示例应用程序中看到的,ViewHolders 可以分为 3 个部分。HeaderViewModel_这些部分可以特别在模型中表示,例如ButtonBindingModel_CarouselModelGroup

而init RecyclerView的代码如下:

根据官方文档:

如果使用 GridLayoutManager,这将自动将跨度计数与 EpoxyController 同步。

我发现HeaderViewModel_CarouselModelGroup正确同步了跨度,但ButtonBindingModel_不是。我一直在示例代码中搜索“span”或“grid”这个词,我只是想不通为什么ButtonBindingModel_可以将其 span 设置为 1。

如果我将 RecyclerView 的跨度设置从 2 更改为 3:

在此处输入图像描述

HeaderViewModel_并且CarouselModelGroup仍然保持同步整个跨度,但跨度ButtonBindingModel_仍然是 1。

我想知道是否有一种方法可以将跨度设置ButtonBindingModel_为全跨度,以及设置HeaderViewModel_CarouselModelGroup特定跨度的方法,无论是通过代码(以编程方式)还是通过布局。请帮我解决这个问题,我很感激。

0 投票
0 回答
695 浏览

android - 如何使用 Epoxy 在列表中实现可折叠/可扩展项目?

如何使用Epoxy Android 库正确实现折叠/展开项目?我浏览了wiki示例应用程序,但找不到任何示例或解释如何在列表中准确实现此类行为?

在此处输入图像描述

0 投票
1 回答
840 浏览

android - PagedList RecyclerView在pagedList失效后跳转

设置 :

我们使用PagedListEpoxyController, RxPagedListBuilder,ItemKeyedDataSource运行时Mockgenerator,它只是根据生成的数据索引创建一个用户,例如。用户 1、用户 100、用户 500等。

分页配置为:

预期行为

每当我们向下滚动到400项并返回到第300项并通过单击“关注/取消关注”使列表无效时,UI 会跳转。单击按钮时,PagedList 会像这样无效:

在此处输入图像描述

followers.dataSource.invalidate()

loadInitial()insideItemKeyedDataSource应该使用值调用,params.key以便我们可以重新显示之前显示的相同页面。例如,如果user300在屏幕中可见,则该项目requestedInitialKey应在[user221,user280] 的范围内

问题出在哪里?

last item that was fetched in the pagedList失效前的分页库轨道but does not提供了一种方法来了解last item/range that was visible在失效之前屏幕中的哪一个。

在使 pagedList 失效后,在 pagedList 失效后调用的第一个回调loadInitial(params : LoadInitialParams, callback : LoadInitialCallback)params包含有关 pageSize 和占位符的信息以及与失效前requestedInitialKey一样的信息last item that was fetched,这非常具有误导性。为什么,after invalidationpagedListrequest将列表中要获取的最后一项作为requestedInitialKey / item in the firstPage而不是the last item that was displayed before invalidation?。抱歉,如果我完全误解了这件事,但无法真正理解它。

问题 :

我希望pagedList从前一个滚动位置而不是前一个 pagedList 中的最后一项失效后开始获取新 PagedList 中的第一页。

  • 但是,如果 PagedList 不应该以这种方式工作,那么我如何知道在失效之前之前在屏幕中可见的任何项目/索引?

  • 如果我目前也不能这样做,那么推荐的实现这一要求的方法是什么?

这个问题可以在这里找到:

重现:向下滚动足够远(如第 60 项)并按“刷新”,您将在列表中看到跳转。 链接到 github 问题