I\'m trying to run some automated tests in Robotium by iterating through a list and clicking on each list element to start another activity. I have the code below in my test
I have previously used these helper functions in a slightly different state to handle most of what you need with listviews:
public View getViewAtIndex(final ListView listElement, final int indexInList, Instrumentation instrumentation) {
ListView parent = listElement;
if (parent != null) {
if (indexInList <= parent.getAdapter().getCount()) {
scrollListTo(parent, indexInList, instrumentation);
int indexToUse = indexInList - parent.getFirstVisiblePosition();
return parent.getChildAt(indexToUse);
}
}
return null;
}
public <T extends AbsListView> void scrollListTo(final T listView,
final int index, Instrumentation instrumentation) {
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
listView.setSelection(index);
}
});
instrumentation.waitForIdleSync();
}
With these functions stored somewhere (they can be static if you like... i prefer to not do that but it is convenient)
ListView list = solo.getCurrentListViews().get(0);
for(int i=0; i < list.getAdapter().getCount(); i++){
solo.clickOnView(getViewAtIndex(list, i, getInstrumentation()))
solo.assertCurrentActivity("Json Class", JsonActivity.class);
solo.goBack();
}
Your current solution is in fact trying to iterate through all the listviews you have on screen and not the elements in the listView.
I see a couple of problems:
Try this:
for(int i = 0; i < list.size(); i++) {
assertTrue("There are no listviews in this activity.", list.size() > 0);
chartPosition = 0; // just to be safe, point at the first item in the list.
for(int i = 0; i < list.size(); i++) {
solo.clickInList(chartPosition, i); // Note that "i" identifies the ListView
solo.waitForActivity("name.of.the.expected.activity");
}
...
}
Disclaimer - This suggestion is based purely on code inspections and Robotium Solo Javadoc: http://www.jarvana.com/jarvana/view/com/jayway/android/robotium/robotium-solo/1.4.0/robotium-solo-1.4.0-javadoc.jar!/com/jayway/android/robotium/solo/Solo.html#clickInList(int)