AccessibilityService ListView щелчок или событие аналогового ввода?
Я пытаюсь пройти через ListView, реализовать событие click для каждого элемента, но не работает. Пожалуйста, почему нажатие не имеет никакого эффекта?
public void addFriendSearch(AccessibilityNodeInfo info) {
try {
L.i(TAG, "-addFriendSearch-parent widget----------------------------" + info.getClassName());
L.i(TAG, "--Text:" + info.getText());
L.i(TAG, "--windowId:" + info.getWindowId());
boolean contentInvalid = info.isVisibleToUser();
L.i(TAG, "--contentInvalid:" + contentInvalid);
for (int i = 0; i < info.getChildCount(); i++) {
AccessibilityNodeInfo child = info.getChild(i);
boolean equals = child.getClassName().equals("android.widget.ListView");
if(equals){
for (int j = 0; j < child.getChildCount(); j++) {
L.i("listview child:"+j);
AccessibilityNodeInfo child1 = child.getChild(j);
if (child1 != null) {
if (child1.isClickable()) {
L.i("listview child click");
info.performAction(AccessibilityNodeInfo.ACTION_CLICK); // click
}
}
}
}else{
if(child!=null){
addFriendSearch(info.getChild(i));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
или как войти в событие?
1 ответ
В «информации» у вас есть дескриптор всего родительского виджета, но вы пытаетесь щелкнуть определенный элемент. Вам нужно будет получить доступ к определенному дочернему элементу, используя «child1», чтобы иметь возможность щелкнуть по определенному элементу.
Изменять
info.performAction(AccessibilityNodeInfo.ACTION_CLICK);
к
child1.performAction(AccessibilityNodeInfo.ACTION_CLICK);
Это гарантирует, что действие щелчка будет выполнено для определенного подэлемента, а не для всего виджета, поэтому в настоящее время он не работает.