Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f58d4f35 authored by Sally Yuen's avatar Sally Yuen Committed by Android (Google) Code Review
Browse files

Merge "Add the click accessibility action to ExpandableListView" into main

parents 111539a0 d8bb1986
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.SoundEffectConstants;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ExpandableListConnector.PositionMetadata;

@@ -660,7 +661,11 @@ public class ExpandableListView extends ListView {

        // Internally handle the item click
        final int adjustedPosition = getFlatPositionForConnector(position);
        return handleItemClick(v, adjustedPosition, id);
        final boolean clicked = handleItemClick(v, adjustedPosition, id);
        if (v != null) {
            v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
        }
        return clicked;
    }

    /**
@@ -1150,15 +1155,18 @@ public class ExpandableListView extends ListView {
    public void onInitializeAccessibilityNodeInfoForItem(
            View view, int position, AccessibilityNodeInfo info) {
        super.onInitializeAccessibilityNodeInfoForItem(view, position, info);

        final PositionMetadata metadata = mConnector.getUnflattenedPos(position);
        if (metadata.position.type == ExpandableListPosition.GROUP) {
            if (view != null && view.isEnabled()) {
                info.setClickable(true);
                info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK);
                if (isGroupExpanded(metadata.position.groupPos)) {
                    info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_COLLAPSE);
                } else {
                    info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_EXPAND);
                }
            }
        }

        metadata.recycle();
    }