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

Commit d8bb1986 authored by Sally's avatar Sally Committed by Sally Yuen
Browse files

Add the click accessibility action to ExpandableListView

Bug: 287116276
Test: atest ExpandableListViewTest
Change-Id: Idf9c28092ab8593e7e7ccaaa107f32095c8ae1b5
parent 89cc5e9d
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();
    }