如何使用 Espresso 单击某个视图中的特定视图回收视图物品?我知道我可以使用以下命令单击位置 0 处的项目:
onView(withId(R.id.recyclerView)) .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
但我需要单击该项目内的特定视图,而不是项目本身。
- 编辑 -
更准确地说:我有一个回收视图 (R.id.recycler_view
) 哪些项目是CardView (R.id.card_view
)。每个里面CardView我有四个按钮(除其他外),我想单击一个特定按钮(R.id.bt_deliver
).
我想使用 Espresso 2.0 的新功能,但我不确定是否可行。
如果不可能,我想使用这样的东西(使用托马斯·凯勒代码):
onRecyclerItemView(R.id.card_view, ???, withId(R.id.bt_deliver)).perform(click());
但我不知道问号上该打什么。
您可以通过自定义视图操作来完成此操作。
public class MyViewAction {
public static ViewAction clickChildViewWithId(final int id) {
return new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return null;
}
@Override
public String getDescription() {
return "Click on a child view with specified id.";
}
@Override
public void perform(UiController uiController, View view) {
View v = view.findViewById(id);
v.performClick();
}
};
}
}
然后你可以点击它
onView(withId(R.id.rv_conference_list)).perform(
RecyclerViewActions.actionOnItemAtPosition(0, MyViewAction.clickChildViewWithId(R.id. bt_deliver)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)