Как нажать на кнопку, которая проиндексирована на 10 позиций в ListView - Robotium Automation?
Предположим, у меня есть ListView, который содержит 20 ListItems. У каждого элемента есть кнопка, теперь я хочу нажать кнопку, которая находится на 10 позиции в ListView. Как я могу автоматизировать это через Robotium?
4 ответа
Попробуйте сделать это так (не уверен, что это работает)
//get the list view
ListView myList = (ListView)solo.getView(R.id.list);
//get the list element at the position you want
View listElement = myList.getChildAt(10);// myList is local var
//click on imageView inside that list element
solo.clickOnView(solo.getView(listElement.findViewById(R.id.my_button)));// not double eE
Надеюсь это поможет!
//First get the List View
ListView list = (ListView) solo.getView(R.id.list_view);
/* View viewElement = list.getChildAt(10);
This might return null as this item view will not be created if the 10th element is
not in the screen. (i.e. the getView would have not been called for this view).
Suppose for single item list_item.xml is used then
Get the 10th button item view as follows:*/
int i = 10 ;
View buttonItem = list.getAdapter().getView(i,getActivity().findViewById(R.layout.list_item),list);
solo.clickOnView(buttonItem);
Попробуйте использовать solo.clickInList(int line, int index)
Что-то вроде:
solo.clickInList(10,0)
Надеюсь это поможет!
Я не уверен, что именно вы пытаетесь сделать. Я предполагаю, что у вас есть представление списка со слишком большим количеством элементов, чтобы поместиться на экране, и вы хотите нажать кнопку, которая находится на 10-й позиции или что-то в этом роде? я прав?
Если это так, я ранее произвел некоторые вспомогательные функции просмотра списка, чтобы получить представление по заданному индексу в представлении списка:
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();
}