Мне было интересно, есть ли хороший способ включить / выключить несколько переключателей одновременно с помощью службы специальных возможностей.
Итак, в основном у меня есть представление, содержащее RecyclerView, в котором около 40 переключателей, и мне нужен способ включить/выключить их как можно быстрее. Вот что я пробовал.
public static void scrollView(final AccessibilityNodeInfo nodeInfo) {
if (nodeInfo == null) return;
if (nodeInfo.isScrollable()) {
if (nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD)) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
turnOffSwitches(nodeInfo);
}
}, 1000);
}
}
}
public static void turnOffSwitches(final AccessibilityNodeInfo parentView) {
if (parentView.getClassName().equals("android.support.v7.widget.RecyclerView")) {
for (int i = 0; i < parentView.getChildCount(); i++) {
final AccessibilityNodeInfo child = parentView.getChild(i);
final Boolean isLasteOne = (i == parentView.getChildCount() - 1);
child.performAction(AccessibilityNodeInfo.ACTION_CLICK);
if (isLasteOne) {
scrollView(parentView);
}
}
}
}
Я даже попытался ввести задержку между действиями ACTION_CLICK, что немного помогло, но не решило мою проблему полностью. Итак, проблема, с которой я сталкиваюсь, заключается в том, что не все переключатели выключаются. Кажется, что есть предел скорости, с которой это можно сделать. Итак, мой вопрос: есть ли лучший способ сделать это?