1. ホーム
  2. android

[解決済み] Espressoを使用してRecyclerViewアイテム内のビューをクリックする

2022-09-15 06:04:32

質問

Espresso を使って、特定のビューをクリックする方法を教えてください。 RecyclerView の中で特定のビューをクリックするにはどうすればよいのでしょうか?私は私が使用して位置0にアイテムをクリックすることができることを知っています。

onView(withId(R.id.recyclerView)) .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));

しかし、私はアイテム自体ではなく、そのアイテム内の特定のビューをクリックする必要があります。

事前にありがとうございます。

-- 編集 --

もっと正確に言うと 私の場合は RecyclerView ( R.id.recycler_view ) はどの項目が カードビュー ( R.id.card_view ). それぞれの内部に カードビュー 4つのボタンがあり(中略)、特定のボタンをクリックしたい( R.id.bt_deliver ).

Espresso 2.0の新機能を使いたいのですが、可能でしょうか?

もし不可能なら、こんなものを使いたい(Thomas Kellerのコードを使って)。

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