Java 如何通过Espresso单击ArrayList中的第一项

Java 如何通过Espresso单击ArrayList中的第一项,java,android,unit-testing,android-espresso,Java,Android,Unit Testing,Android Espresso,我试着点击我的arraylist的第一项已经有几个小时了,我读了很多关于堆栈溢出的问题,教程,我试着用很多方法实现它们,但是都不起作用 clickView(getSearchActivity().hintListView); onData(anything()) .onChildView(withId(R.id.hintLayout)) .atPosition(0) .perform(click()); onData(allOf(is(instanceOf(St

我试着点击我的arraylist的第一项已经有几个小时了,我读了很多关于堆栈溢出的问题,教程,我试着用很多方法实现它们,但是都不起作用

   clickView(getSearchActivity().hintListView);

onData(anything())
    .onChildView(withId(R.id.hintLayout))
    .atPosition(0)
    .perform(click());

onData(allOf(is(instanceOf(String.class))))
    .atPosition(0)
    .perform(click());

onData(instanceOf(ArrayList.class))
    .atPosition(0)
    .perform(click());

onData(instanceOf(String.class))
    .atPosition(0)
    .perform(click());

onData(anything())
    .inAdapterView(withId(R.id.hintLayout))
    .atPosition(0)
    .perform(click());

onData(anything())
    .inAdapterView(allOf(withId(R.id.hintLayout), isCompletelyDisplayed()))
    .atPosition(0).perform(click());
我必须单击ListView的第一项,即获取ArrayList 此ListView的id为hintLayout


有人知道问题出在哪里吗?它在哪里?

必须用适配器填充
列表视图。完成适配器后,只需将其添加到
列表视图中,如下所示:

private void setListAdapter(ListDataAdapter adapter){
    lvYourListView.setAdapter(adapter);
}
为了在
OnClick
事件中获取数据,您需要在
onCreate()方法中执行类似的操作:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

 lvYourListView = (ListView) findViewById(R.id.lvListview);
        lvYourListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                ListData data = new ListData();

                data = (ListData)parent.getItemAtPosition(position);

                doSomethingWithData(data);

            }
        });
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
lvYourListView=(ListView)findviewbyd(R.id.lvListview);
lvYourListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
ListData数据=新ListData();
data=(ListData)parent.getItemAtPosition(position);
doSomethingWithData(数据);
}
});

如果您需要适配器方面的帮助,请告诉我。我需要查看您的更多代码才能做到这一点。

您使用的是
ListView
还是
RecyclerView
?我使用的是ListView当我必须在微调器中单击项时,可以使用:
onData(instanceOf(String.class))。在位置(1)。执行(单击())
现在我遇到了大麻烦我不清楚你想做什么。你写道我必须单击列表视图的第一项。这是否意味着你必须单击第一个元素——因为你用
.atPosition(0)硬编码位置。执行(单击());
我必须单击任何元素(无论是哪一个)但任何位置都不能点击——这就是问题所在。