gpt4 book ai didi

android - 使用 robotium 滚动时单击所有 ListView 元素

转载 作者:太空狗 更新时间:2023-10-29 15:36:43 25 4
gpt4 key购买 nike

我有一个包含很多元素的 listView,即我们必须向下滚动才能看到所有元素。现在我要做的是,单击所有 listView 元素。我怎样才能做到这一点。现在,我正在使用以下代码,但它不会自动滚动。请帮忙。

ListView l = solo.getCurrentListViews().get(0);
assertNotNull("No list views!", l);
assertTrue("No items in list view!", l.getChildCount() > 0);
// Get the last list item
View v = l.getChildAt(l.getChildCount());
System.out.println("getChildCount: " + l.getChildCount());

int i = 1;
while (i <= l.getChildCount()) {
solo.clickInList(i);

solo.goBack();

i++;

}

最佳答案

我以前在稍微不同的状态下使用这些辅助函数来处理 ListView 所需的大部分内容:

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

有了这些,您的方法将是:

ListView list = solo.getCurrentListViews().get(0);
for(int i=0; i < list.getAdapter().getCount(); i++){
solo.clickOnView(getViewAtIndex(list, i, getInstrumentation()))
}

关于android - 使用 robotium 滚动时单击所有 ListView 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com