如何通过Espresso执行ArrayList中的第一项操作

时间:2017-06-02 13:49:48

标签: java android unit-testing android-espresso

我试图点击我的arraylist的第一项几个小时,我已经阅读了很多关于Stack Overflow,教程的问题,我试图以多种方式实现它们,但它不起作用。

   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。

有人知道这是什么问题吗?它在哪里?

1 个答案:

答案 0 :(得分:0)

必须使用适配器填充ListView。完成适配器后,只需将其添加到ListView,如下所示:

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);

            }
        });

如果您需要有关适配器的帮助 - 请告诉我。为了做到这一点,我需要查看更多代码。