android-由于升级到Robolectric 4.3,所以ListView的onItemClickListener会获得空视图

android-由于升级到Robolectric 4.3,所以ListView的onItemClickListener会获得空视图,第1张

概述我的活动布局基本上是这样(简化以说明问题).如果设备的屏幕很小,则基本上没有足够的空间显示ListView,因为其他视图占据了所有空间:<LinearLayoutorientation="vertical"><SomeBigViewlayout_width="match_parent"layout_height="680dp"/><ListView

我的活动布局基本上是这样(简化以说明问题).如果设备的屏幕很小,则基本上没有足够的空间显示ListVIEw,因为其他视图占据了所有空间:

<linearLayout orIEntation="vertical">    <SomeBigVIEw        layout_wIDth="match_parent"        layout_height="680dp"/>    <ListVIEw        layout_wIDth="match_parent"        layout_height="wrap_content" /></linearLayout>

我的活动代码按如下所示设置项目点击监听器:

List.onItemClickListener = AdapterVIEw.OnItemClickListener { _, vIEw, _, _ ->    Snackbar.make(vIEw, "Clicked on $vIEw", Snackbar.LENGTH_SHORT).show()}

我的单元测试点击列表中的第一项:

val controller = Robolectric.buildActivity(MainActivity::class.java)    .create().start().resume().visible()val List: ListVIEw = controller.get().findVIEwByID(R.ID.List)shadowOf(List).performItemClick(0)

使用Robolectric 4.2.1,我的点击侦听器将以非null视图进行调用.
在Robolectric 4.3中,使用空视图调用它.

解决方法:

摘要:
解决方案是使用@Config(qualifIErs =“ h780dp”)注释为此测试指定更大的设备高度.

细节:
经过一些调试后,我发现使用Robolectric 4.2.1时,ListVIEw的高度为146(顶部= 680,底部= 826),但是对于Robolectric 4.3,它的高度为0(顶部= 680,底部= 680). Robolectric使用的默认设备高度为470,这不足以显示列表.该列表在Robolectric 4.3中没有任何子视图.

从robolectric的ShadowAdapterVIEw中可以找到shadowOf(List).performItemClick(0)的实现,该实现为:

public boolean performItemClick(int position) {    return realAdapterVIEw.performItemClick(realAdapterVIEw.getChildAt(position),        position, realAdapterVIEw.getItemIDAtposition(position));}

在Robolectric 4.3中,getChildAt(position)返回null,这是转发给单击侦听器的内容.

解决方法是为该测试指定更大的设备屏幕.例如:

@Test@Config(qualifIErs="h780dp")
总结

以上是内存溢出为你收集整理的android-由于升级到Robolectric 4.3,所以ListView的onItemClickListener会获得空视图全部内容,希望文章能够帮你解决android-由于升级到Robolectric 4.3,所以ListView的onItemClickListener会获得空视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1081694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存