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

Commit d296fafa authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Avoid touching all adapter items when building accessibility event.

Only check for enabled items if the list is less than 15 items.
parent 85dfec8c
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -1852,19 +1852,26 @@ public class ListView extends AbsListView {
    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
        boolean populated = super.dispatchPopulateAccessibilityEvent(event);

        // If the item count is less than 15 then subtract disabled items from the count and
        // position. Otherwise ignore disabled items.
        if (!populated) {
            int itemCount = 0;
            int currentItemIndex = getSelectedItemPosition();

            ListAdapter adapter = getAdapter();
            if (adapter != null) {
                for (int i = 0, count = adapter.getCount(); i < count; i++) {
                final int count = adapter.getCount();
                if (count < 15) {
                    for (int i = 0; i < count; i++) {
                        if (adapter.isEnabled(i)) {
                            itemCount++;
                        } else if (i <= currentItemIndex) {
                            currentItemIndex--;
                        }
                    }
                } else {
                    itemCount = count;
                }
            }

            event.setItemCount(itemCount);