Android getRootInActiveWindow() 最多只需要 5 个列表项

问题描述 投票:0回答:1

我正在尝试从 Android 中 AccessibilityService 的 getRootInActiveWindow() 读取列表视图。

AccessibilityNodeInfo topMostNode = getTopMostParentNode(getRootInActiveWindow());

这就是我在窗口中获取 topMostNode 的方式, getTopMostParentNode() 函数递归地检查并返回最顶层的父节点。

问题是我按下了“显示更多”按钮,它会再加载 5 条记录,最初,它在列表视图中显示 5 个元素。但是当我在根活动窗口中获取所有 listView 节点时,(也许)我没有获取最新的屏幕信息。但正因为如此,我无法获取列表视图中的所有项目,仅获取前 5 个项目。

所以,我问是否可以做一些事情来帮助我获取列表视图中的所有项目,或者有什么方法可以刷新窗口以加载可访问性服务。

我尝试过 topMostNode.refresh() 但没有帮助。

这就是我获取所有列表视图项目的方式:

 List<AccessibilityNodeInfo> listViewNodes = new ArrayList<>();
 findNodesByClassName(getRootInActiveWindow(), "android.widget.ListView", listViewNodes);

ListView 包含多个列表视图,我正在尝试读取

android accessibility accessibilityservice
1个回答
0
投票

显然,有一种方法可以刷新节点,使用

refresh()
类上的
AccessibilityNodeInfo
函数。就这样,我像
topMostNode.refresh()
一样刷新了我的topMostNode,然后它就按预期工作了。

© www.soinside.com 2019 - 2024. All rights reserved.