Robotium 超过一屏的 listview,怎么遍历每一项 item?

未来来 · 2014年10月23日 · 最后由 未来来 回复于 2015年08月16日 · 2425 次阅读


像这种超过一屏的 list,做遍历点击的时候,当超过一屏的时候,会点击不到 list 上的 item,报错如下:
junit.framework.AssertionFailedError: View is null and can therefore not be clicked!

请问有什么方法能够遍历整张 list 吗?

共收到 14 条回复 时间 点赞

scroll

#1 楼 @lihuazhang 我在自动化遍历的时候,怎么判断什么时候需要进行翻页操作呢?

从代码内部去取对象,然后拿到所有的 list

#4 楼 @monkey 能获取到 list 所有的 item,但是超过一屏的时候,无法实现点击操作

#5 楼 @75281920 不是,你点击只不过是为了传输数据,你直接传数据到下面 i 个对象的实例中就好了

可以看下 scrollvie 截图的代码。

@75281920 您好,新手请教个问题,在 robotium 里,如何获取 listview 中每一行的值呢?我试了 getSelectedItem(i).toString() 方法,但是通不过,希望能得到您的解答,谢谢啦!

#8 楼 @jinmincn ListView list = (ListView) solo.getView(R.id.XXX);然后遍历每个 item 就好了

#9 楼 @75281920 listview 里的 item 是通过 arrayAdapter 自动填充的,所以每行的 id 都是一样的,这就是问题所在。。。
listview 源码:listview.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_single_choice,data));
其中,data 是一个 sting 型数组,ex: private String[] data = {"Forrest Gump","The Shawshank Redemption","3 idiots","Titanic",....}
我查看了 solo 的 api 后,没有发现可直接使用的方法获取 item 的值,可能有其他方法我不知道。

#9 楼 @75281920
每个 item 的 id 都是 text1

#10 楼 @jinmincn 1 获取的是 list 的 id(我取的是 R.id.XXX,不是 resource-id),然后 List.getChildAt(i) 来遍历。2 你可以使用 index 来定位相同的 resource-id。 不知道能不能帮到你。

#12 楼 @75281920 List.getChildAt(i) 是个好办法,嘿嘿,谢谢你啊

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册