2016-06-10 11 views
1

Ich habe eine ExpandableListView und ich möchte click() eines seiner Kinder.Espresso - Warum findet Espresso dieses Spiel mehrdeutig?

Ich habe versucht LASTEN verschiedene Möglichkeiten, aber ich kann einfach nicht zu verstehen scheinen, wie Espresso funktioniert.

Zum Beispiel, warum funktioniert dieser Code nicht?

onData(withId(R.id.execexpList)).onChildView(is(withId(200))).perform(click()) 

Aus irgendein göttlichen Vernunft, gibt es „mehrdeutiges Spiel“ zu meinen ExpandableLIstView und andere Listview von mir, aber sie haben unterschiedliche IDs.

Kann mir jemand helfen?

+0

Sollte nicht 'withId' eine' R.id' nehmen? –

+0

@JaredBurrows Ich habe jede Zeile in meiner 'ExpandableListView' auf eine bestimmte ID gesetzt. Also das ist, warum ich es fest codierte – RafaelC

+0

Sie verwendeten 'setId' auf der Ansicht? Versuchen Sie zuerst 'withId (is (int))'. Siehe https://developer.android.com/reference/android/support/test/espresso/matcher/ViewMatchers.html#withId(int). Wenn das nicht funktioniert, versuche 'setTag'. Dann verwenden Sie https://developer.android.com/reference/android/support/test/espresso/matcher/ViewMatchers.html#withTagKey(). –

Antwort

1

onData() wird verwendet, um ein Element innerhalb des Adapters Ihres ListView zu vergleichen, nicht die tatsächliche Ansicht.

onChildView() wird verwendet, um einen Nachkommen des ListView-Elements abzugleichen, das in onData() übereinstimmt. Wenn Sie mehrere AdapterViews in der Hierarchie haben, müssen Sie statt dessen inAdapterView(Matcher<View>viewMatcher) verwenden.

Offizielle API guide erklärt onData() Verwendung in weiteren Details.