使用 Espresso 滚动新的 ListActivity

scroll new ListActivity with Espresso

如何点击我看不到的项目lit7.txt?

我无法使用 Espresso 滚动 MyListActivity 并单击特定项目。我想点击 lit7.txt 项目,但我在屏幕上看不到它。我需要向下滚动。但是怎么办?

screen image with MyListActivity(DirectoryViewer) and lit7.txt

我可以点击"Browse..."

Espresso.onView(Matchers.allOf(ViewMatchers.withText("Browse..."))).perform(ViewActions.click());

我可以点击histo2.txt

Espresso.onView(Matchers.allOf(ViewMatchers.withText("histo2.txt"))).perform(ViewActions.click());

但是如何点击我看不到的项目lit7.txt?

所以,我加载我的 ListActivity(DirectoryViewer)

protected void onLoad(){
        Intent intent = new Intent(this, DirectoryViewer.class);
        intent.putExtra(DirectoryViewer.ASSET_DIRECTORY_LOCATION, "books");
        startActivityForResult(intent, 1);}

DirectoryViewer 是:

class DirectoryViewer extends ListActivity
...
    void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String dirName = getIntent().getStringExtra(ASSET_DIRECTORY_LOCATION);
        List<ListItem> items = new ArrayList<ListItem>();
        items.add(new BrowseListItem(getString(R.string.my_browse)));//Browse...
        items.add(new HeaderItem(getString(R.string.myItems)));//ITEMS
        AssetManager am = getResources().getAssets();//files
        try {
            String[] topLevel = am.list(dirName);
            for (String folder : topLevel) {
            ...
            }
        }
    }

我建议查看 onData method,它允许您与 ListView 中的信息进行交互。

这将滚动列表视图直到第 20 个项目可见。

 onData(hasEntry(equalTo(ListViewSample.ROW_TEXT),is("List item: 20")))
        .check(matches(isCompletelyDisplayed()));