问题标签 [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 投票
2 回答
3005 浏览

android - airbnb 环氧树脂 - 如何插入新物品

我在理解环氧树脂在 Android 中的工作原理时遇到问题。这里也有教程

想象一下我有一个适配器如下:

这是按照这里的例子

我将如何插入有关“您朋友喜欢的照片”的新项目。所以我想要一个新的标题来写“你朋友喜欢的照片”,然后我需要实际添加我已经存储在模型中的照片。

我是否只需执行以下操作即可使其正常工作:

我对“模型”类有点困惑。例如,我认为会有一个 PhotosModel 类和一个 PhotoFriendsModel 类等,而不是从示例中我看到一个 HeaderModel 和 LoaderModel。我认为每个项目行类型都应该有一个模型。有人可以解释一下。

更新:

让我们说我有更多信息,而不是照片。可以说我有关于照片拍摄地址的信息。所以现在在所有照片都显示在照片正下方之后,我想显示每张照片拍摄的地址的巨大列表。告诉我如何添加地址列表?

0 投票
1 回答
269 浏览

java - Mockito 测试 EpoxyController 在实例化时抛出 NPE

我使用 Airbnb 的Epoxy 2.0,我想对我的Controller. 每当我尝试Controller使用 Mockito 实例化一个新的时,它都会给我一个 NPE。

也许沿着 Mockito 走在这里是错误的路线。除了 Mockito、Espresso 和 JUnit,我从未使用过任何东西——也许我应该研究一下 Robolectric/Android AssertJ?

堆栈跟踪

0 投票
0 回答
247 浏览

android - 如何在 Android 项目中使用 airbnb 环氧树脂?

我正在尝试在我的项目中集成和使用环氧树脂,我已将模块环氧树脂适配器、环氧树脂注释、环氧树脂数据绑定、环氧树脂光刻、环氧树脂处理器复制到我的项目中,但是应该生成带有 _ 的类在构建时没有生成。PS:-我没有任何代码可以粘贴在这里。我已经做了足够的研究,但无法得到结果。

0 投票
2 回答
2870 浏览

android - 使用 Dagger 时在 Epoxy 控制器中实现 onClick 的最佳方法是什么

我正在尝试在RecyclerView使用 airbnb.epoxy 的项目上实现 Click 功能。问题是我需要上下文才能在单击时导航到另一个活动。

我做了什么: 在 Epoxy 的示例应用程序之后,我在 EpoxyController 内实现了一个接口,其中包含在单击回收器视图中的项目时要调用的函数。然后我让我的主活动实现这个接口和方法,并在主活动中使用它的构造函数实例化控制器,并将一个对活动的引用传递给它:

主要活动的 onCreate 和onMortgageClick

在上述工作时我想做什么Dagger2,我在我的项目中使用并想将控制器注入到MainActivity,注入它不是问题,而是提供活动上下文,经过一些研究,我发现环氧树脂允许活动注入,所以我想我可以将主要活动注入控制器,但我不确定这是最好的方法,也找不到实现这个的示例项目。

请告诉我最好的方法是什么

0 投票
1 回答
1386 浏览

android - Epoxy 要求每个模型属性实现 equals 和 hashCode 错误

我在这里为这个问题创建了一个小型测试应用程序:(https://github.com/Winghin2517/EpoxyExample2)。

我想将对象列表传递给环氧树脂控制器,以便生成图表。然而,我在构建应用程序时遇到了这个错误:

错误:环氧树脂处理器异常:Iterable 中的类型未实现 hashCode。类型:kwaai.com.exampleepoxy_hashcodeequals.GraphData (View Prop {view='HeaderView', name='setLineChart', type=java.util.LinkedList}) Epoxy 要求每个模型属性都实现 equals 和 hashCode 以便模型的变化可以被追踪。如果您希望排除该属性,请使用选项“DoNotHash”。如果您想忽略此警告,请使用选项“IgnoreRequireHashCode”

我认为这是因为我在对象列表(GraphDataFeed 的 LinkedList)上使用了@ModelProp,而不是根据 Epoxy 的示例应用程序在原始类型上使用。

所以我遵循了这些选项并修改了我的@ModelProp 以反映这一点:

更改后,应用程序构建并正确运行。你可以看到下面的图表。

在此处输入图像描述

但是,我不想忽略该属性,因为我了解 Epoxy 使用 Diffing 来更新 recyclerview 中的模型:https ://github.com/airbnb/epoxy/wiki/Diffing

忽略该属性可能意味着我的模型没有在 recyclerview 中正确更新。在这里的指导材料(https://github.com/airbnb/epoxy/wiki/Epoxy-Models#annotations)中,我看到它说:

模型的状态由其 equals 和 hashCode 实现确定,这基于模型所有属性的值。

此状态用于比较以确定模型何时更改,以便 Epoxy 可以更新视图。

这些方法是生成的,因此您不必手动创建它们。

为什么没有为我生成这些方法,如果没有生成,我如何自己生成这些方法以消除错误?

0 投票
1 回答
167 浏览

java - 如何从 EpoxyModel 回电?

我需要从 MyEpoxyModel 回电。我需要从模型中调用控制器中的回调我该怎么做?(带环氧树脂)

0 投票
1 回答
310 浏览

kotlin - 环氧树脂,Kotlin:使用 @ModelView 不会产生任何错误

我成功地让环氧树脂从此生成代码EpoxyModelClass

但不幸的是不是来自ModelView. 它构建没有错误,但没有生成围绕此的环氧树脂类:

尝试了许多变体以使其正确,但构建日志中没有有用的错误。

0 投票
2 回答
791 浏览

java - 为什么 Epoxy 不生成模型类?

我想用 Epoxy 对我的 recyclerView 使用 kotlin,但是 Epoxy Model 没有生成 PostModel_() 类,有什么问题吗?

0 投票
0 回答
86 浏览

android - EpoxyModels 的 Epoxy 和池化

我正在使用 EpoxyController 实现 EpoxyRecyclerView。

由于我的用例要求非常快速地重新创建和区分模型(大约每秒 100 个模型),我担心大量(相对复杂的)EpoxyModel 会造成内存流失。所以我正在为他们寻找一个池化解决方案。

这让我想到了我的问题:何时/何处将模型返回到池中?

模型从池中取出,填充并通过 setData() 发送到 Controller,它替换模型列表并调用 requestModelBuild()。我正在考虑将旧模型列表保存在 setData() 中,并在构建完成并在模型构建侦听器上调用 onModelBuildFinished() 后将它们返回到池中。那行得通吗?环氧树脂是用旧型号做的吗?

0 投票
0 回答
447 浏览

android - ViewPager 内的 EpoxyRecyclerView

在 ViewPager 中使用 EpoxyRecyclerView

错误:

09-03 22:54:36.394 23354-23354/com.milcgroup.one E/AndroidRuntime:致命异常:主进程:com.milcgroup.one,PID:23354 java.lang.IllegalStateException:此 EpoxyController 已将其适配器添加到更多比一个 ReyclerView。Epoxy 不支持将适配器附加到多个 RecyclerView,因为保存的状态将无法正常工作。如果您不打算将您的适配器附加到多个 RecyclerView,您可能会泄漏对先前 RecyclerView 的引用。确保从任何以前的 RecyclerViews 中删除适配器(例如,如果适配器在多个 onCreateView/onDestroyView 循环的片段中重用)。请参阅 https://github.com/airbnb/epoxy/wiki/Avoiding-Memory-Leaks了解更多信息。在 com.airbnb.epoxy.EpoxyController$3.run(EpoxyController.java:690) 在 android.os.Handler.handleCallback(Handler.java:790) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android .os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os .RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)