问题标签 [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.
android - MvRX DrawerLayout + 通常需要更多示例
我正在尝试在 MvRx 示例项目中设置 DrawerLayout,但我有点卡住了。
一般来说,环氧树脂和 MvRx 都是全新的,我已经玩了一个星期了,现在学习了将我们的应用程序转换为 MvRx 所需的框架和测试组件。
我想知道的是如何使用 MvRx 设置 DrawerLayout 视图。
当前的示例对于新手来说也非常全面。任何人有一个极简的启动器可用?
// JQ
android - 环氧树脂视图中的谷歌地图片段
我目前正在探索 Airbnb 的新MvRx堆栈
现在我正在将谷歌地图片段成功添加到 BottomNavigationView 中的 BaseMvRxFragment。
问题是 2. 当我导航到 MapFragment 我的应用程序崩溃时,我收到以下错误消息:
MapFragment.kt
地图视图.kt
view_map.xml
谢谢你的帮助!<3
android - Airbnb Epoxy For Gmail 类似仪表板界面
正在构建一个显示对象列表的应用程序。我现在正在使用 android recycler 视图。
现在根据新要求,我想按组显示此列表,类似于本问题中所述
我的问题是:
- 我可以使用Airbnb Epoxy来实现它吗?
- 环氧树脂会过大吗?
- 还是我应该只使用 SO 问题中提供的解决方案?
请指教。谢谢 !
android - 如何用airbnb环氧树脂做UI测试?
目前我正在一个使用环氧树脂的项目中工作,我很难思考如何用它创建 UI/集成测试。在 Epoxy github 的存储库中,我只有一个关于测试 RecyclerView 的提示,但我认为这不是最好的方法。
你能给我一些建议吗?
谢谢 :)
android - 启用视图状态保存时,如何正确初始化 Epoxy ModelView 中的属性?
我有以下模型视图的代码。
当我禁用saveViewState = true
或删除它时,checkbox?.isChecked
由环氧树脂适配器正确设置(根据isChecked
传递给注释方法的布尔值设置为真或假)。但是,当我启用它(设置saveViewState = true
)时,该checkbox?.isChecked
值始终设置为 false(至少在我在 UI 中看到的那样,所有复选框都未选中)。
前后放了log this.checkbox?.isChecked = isChecked
,看到传递的值是正确的,checkboxisChecked
属性设置正确。我不明白的是为什么环氧树脂会覆盖所有这些并将复选框设置为未选中状态(为假),尽管它的属性设置为例如选中状态。我试图requestModelBuild
在模型构建后立即对环氧树脂视图进行处理,并且有一些延迟,但这没有帮助。
启用视图状态后,如何在环氧树脂模型视图中设置复选框状态?使用 EditText 时是否也会出现此问题?以及为什么正确填充了复选框标签(没有空文本,传递的文本按原样显示)?
android - 增加 MaxRecycledViews 对 Recyclerview 性能有影响吗?
我有一个Recyclerview
包含多个项目的详细信息屏幕,它具有不同的项目类型,NestedScrollview
而Recylcerview
不是实现它
为我们提供更快的页面加载时间以及简单的动画。
但是,有一个项目类型被onCreateViewHolder
多次调用,因为它有超过 5 个实例,5 是默认数量,MaxRecycledViews
据我所知,它onCreateViewHolder
正在再次膨胀视图,这会导致性能问题。
我想知道我增加的数量是否MaxRecycledViews
会导致任何性能问题?因为增加该数字将阻止onCreateViewHolder
每次超过 MaxRecycledViews 时调用 此处是我的Recyclerview
外观示例:
A
B
C
D
D
D
D
D
D
E
F
G
H
其中字母代表项目类型。所以我的解决方案是通过这样做来增加数量
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
注释的模型。
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
特定跨度的方法,无论是通过代码(以编程方式)还是通过布局。请帮我解决这个问题,我很感激。
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 invalidation
pagedListrequest
将列表中要获取的最后一项作为requestedInitialKey / item in the firstPage
而不是the last item that was displayed before invalidation
?。抱歉,如果我完全误解了这件事,但无法真正理解它。
问题 :
我希望pagedList
在从前一个滚动位置而不是前一个 pagedList 中的最后一项失效后开始获取新 PagedList 中的第一页。
但是,如果 PagedList 不应该以这种方式工作,那么我如何知道在失效之前之前在屏幕中可见的任何项目/索引?
如果我目前也不能这样做,那么推荐的实现这一要求的方法是什么?
这个问题可以在这里找到:
重现:向下滚动足够远(如第 60 项)并按“刷新”,您将在列表中看到跳转。 链接到 github 问题