我正在使用 Glide 将图像加载到我的 imageView(在 recyclerview 中):
Glide.with(image.context).load(url)
.error(context.getDrawable(R.drawable.placeholder))
.into(image)
Run Code Online (Sandbox Code Playgroud)
我看到 Glide 库还有一个“占位符”函数,它可以在图像仍在加载时加载要显示的 Drawable。
另一方面,对于整个 recyclerView,我使用Facebook Shimmer库来显示正在加载 recyclerview。
看看我的应用程序,一切正常。但是,在关闭 Shimmer(获取数据)和显示图像之间仍然存在间隔时间。这正是需要占位符的时候。我想知道,有没有办法将 Shimmer 用作 imageView 的占位符?Glide 中的 Placeholder 特性只支持 Drawable,Shimmer 是一个 View。
无论如何将Shimmer转换为Drawable?还是GIF?或者有什么其他建议?
我正在尝试在 Mockk 的帮助下为我的视图模型编写单元测试。
@Test
fun `When loading the ResponseViewState isLoading`() {
val observer = spyk<Observer<ResponseViewState>>(Observer { })
puppiesViewModel.status_.observeForever(observer)
every {
fetchPuppiesUseCase.fetchPuppies()
} returns
Observable.just(Resource.Loading)
puppiesViewModel.fetchPuppies()
val slot = slot<ResponseViewState>()
verify { observer.onChanged(capture(slot)) }
assert(slot.captured.isLoading())
verify { fetchPuppiesUseCase.fetchPuppies() }
}
Run Code Online (Sandbox Code Playgroud)
当我通过间谍创建观察者时发生错误。
val observer = spyk<Observer<ResponseViewState>>(Observer { })
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
java.lang.NoClassDefFoundError: com/example/tink/PuppiesViewModelTest$$Lambda$61/0x0000000800176840
at jdk.internal.reflect.GeneratedSerializationConstructorAccessor4.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48)
at io.mockk.proxy.jvm.ObjenesisInstantiator.instanceViaObjenesis(ObjenesisInstantiator.kt:75)
at io.mockk.proxy.jvm.ObjenesisInstantiator.instance(ObjenesisInstantiator.kt:42)
at io.mockk.proxy.jvm.ProxyMaker.instantiate(ProxyMaker.kt:75)
at io.mockk.proxy.jvm.ProxyMaker.proxy(ProxyMaker.kt:42)
at io.mockk.impl.instantiation.JvmMockFactory.newProxy(JvmMockFactory.kt:34)
at io.mockk.impl.instantiation.AbstractMockFactory.newProxy$default(AbstractMockFactory.kt:29)
at io.mockk.impl.instantiation.AbstractMockFactory.spyk(AbstractMockFactory.kt:102)
at com.example.tink.PuppiesViewModelTest.createObserver(PuppiesViewModelTest.kt:99)
at com.example.tink.PuppiesViewModelTest.given loading state, when fetchPuppies …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Flutter 应用程序,我需要从 API 中获取几乎所有内容,包括图像、颜色、文本等。所以我应该做的是构建应用程序的主要结构,然后用提供的信息填写所有内容应用程序接口。当应用程序开始获取响应并初始化变量以在应用程序中使用它们时,我有必要进行 API 调用 (HTTP GET)。
我使用这里的指令在启动时执行一个函数。在该函数中,我发出 HTTP GET 请求并解析 JSON 文件以提取我需要的信息。
但是,问题在于flutter不会等待HTTP请求的响应,以便我可以使用接收到的JSON中的解析信息。
因此,在下面的代码中,我使用 getdata() 函数来解析 JSON,以便从 JSON 文件中提取 ImageURL,然后使用 NetworkImage 中的 URL。
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(home: HomeScreen());
}
}
class HomeScreen extends StatefulWidget {
@override
HomeScreenState createState() => new HomeScreenState();
}
class HomeScreenState extends State<HomeScreen>
with AfterLayoutMixin<HomeScreen> {
@override
Widget build(BuildContext context) {
Size screenSize = MediaQuery.of(context).size;
return Scaffold(
body: …Run Code Online (Sandbox Code Playgroud) 我有一个在其中声明变量并在构造函数中对其进行初始化的类。当我的代码中只有一个构造函数时,一切都可以正常工作。当我添加另一个构造函数时,会发生此问题。这两个构造函数的一切都相同,但是只有构造函数的参数不同。知道为什么会这样吗?
private final NavDrawerManager.OnDrawerItemClickListener mOnDrawerItemClickListener;
private final MoreMenuActivity.OnItemClickListener mOnItemClickListener;
public NavMenuAdapter(final List<NavMenuItem> menuItems, final String selectedId, final NavDrawerManager.OnDrawerItemClickListener onDrawerItemClickListener) {
mMenuItems = menuItems;
mSelectedId = selectedId;
mOnDrawerItemClickListener = onDrawerItemClickListener;
}
public NavMenuAdapter(final List<NavMenuItem> menuItems, final String selectedId, final MoreMenuActivity.OnItemClickListener onItemClickListener) {
mMenuItems = menuItems;
mSelectedId = selectedId;
mOnItemClickListener = onItemClickListener;
}
Run Code Online (Sandbox Code Playgroud)