【问题标题】:How to perform clicking on the first item in an ArrayList by Espresso如何通过 Espresso 执行单击 ArrayList 中的第一项
【发布时间】:2017-06-02 13:49:48
【问题描述】:

我已经尝试单击数组列表的第一个项目几个小时,我已经阅读了很多关于 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。

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

【问题讨论】:

  • 你使用的是ListView还是RecyclerView
  • 我正在使用 ListView
  • 当我不得不点击 Spinner 中的项目时,使用它就足够了:onData(instanceOf(String.class)) .atPosition(1).perform(click()); 现在我遇到了很大的困难
  • 我不清楚您要做什么。你写了 我必须点击 ListView 的第一项。这是否意味着您必须单击第一个元素 - 因为您使用 .atPosition(0).perform(click()); 对位置进行硬编码
  • 我必须点击任何元素(无论是哪一个),但无法点击任何位置 - 这就是问题所在。

标签: java android unit-testing android-espresso


【解决方案1】:

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

            }
        });

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多