Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 浓缩咖啡-单击gridview中的图像_Android_Android Gridview_Android Espresso - Fatal编程技术网

Android 浓缩咖啡-单击gridview中的图像

Android 浓缩咖啡-单击gridview中的图像,android,android-gridview,android-espresso,Android,Android Gridview,Android Espresso,我的视图层次结构如下所示: GridView{id=2131362110, res-name=item_list_grid, | +----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout | +------------->ImageView{id=2131362125, res-name=item_image | +----->RelativeLayout{id=2131362124, res-

我的视图层次结构如下所示:

GridView{id=2131362110, res-name=item_list_grid, 
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+------>RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
GridView{id=2131362110, res-name=item_list_grid, ...etc
我想单击其中一个id=item\u image的ImageView

我不能将像atPosition(x)这样的东西与onView一起使用,所以我使用了onData。我尝试了所有这些:

onData(allOf(anything(),withId(R.id.item_image))).atPosition(0).perform(click());

onData(anything()).atPosition(0).perform(click());

onData(allOf(atPosition(0),withId(R.id.item_image))).perform(click());
但所有的结果都是

android.support.test.espresso.AmbiguousViewMatcherException: 'is assignable from class: class android.widget.AdapterView' matches multiple views in the hierarchy.

有什么建议吗?谢谢

错误消息告诉您的活动中有多个视图扩展了表单
AdapterView
,因此您的布局中有另一个
ListView
GridView

您可以选择数据层上的
AdapterView
。因此,选择此
AdapterView
,其中包含类型为
ItemModel

onData(is(instanceOf(ItemModel.class))).atPosition(0)
    .onChildView(withId(R.id.item_image)).perform(click());
或者您可以按id选择特定的
AdapterView

onData(anything()).inAdapterView(withId(R.id.my_grid_view)).atPosition(0).
            onChildView(withId(R.id.item_image)).perform(click());

是的,没错。我有两个GridView(我编辑了我的问题)。问题是我的两个GridView都有相同的id。因此我无法使用您的第二个解决方案。我的临时解决方案是:onData(instanceOf(Item.class)).atPosition(0).inAdapterView(allOf(withId(R.id.Item\u list\u grid),isDisplayed()).perform(click());我将再次测试您的第一个解决方案,看看它是否有效。如果您的GridView具有相同的id,则表明您做得不对。这:
onData(anything()).inAdapterView(withId(R.id.my_grid_view)).atPosition(0)。执行(单击())对我来说已经足够了。tnx:)