{"id":19787643,"url":"https://github.com/bumble-tech/recyclerviewaccessibilitybug","last_synced_at":"2026-06-12T00:31:07.256Z","repository":{"id":73220853,"uuid":"595067261","full_name":"bumble-tech/RecyclerViewAccessibilityBug","owner":"bumble-tech","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-30T11:19:31.000Z","size":100,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-18T01:30:51.316Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bumble-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-30T10:23:53.000Z","updated_at":"2023-02-02T13:37:47.000Z","dependencies_parsed_at":"2023-09-19T11:00:14.826Z","dependency_job_id":null,"html_url":"https://github.com/bumble-tech/RecyclerViewAccessibilityBug","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bumble-tech/RecyclerViewAccessibilityBug","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumble-tech%2FRecyclerViewAccessibilityBug","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumble-tech%2FRecyclerViewAccessibilityBug/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumble-tech%2FRecyclerViewAccessibilityBug/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumble-tech%2FRecyclerViewAccessibilityBug/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bumble-tech","download_url":"https://codeload.github.com/bumble-tech/RecyclerViewAccessibilityBug/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bumble-tech%2FRecyclerViewAccessibilityBug/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34224103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T06:24:02.535Z","updated_at":"2026-06-12T00:31:07.226Z","avatar_url":"https://github.com/bumble-tech.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RecyclerView accessibility bug demo project\n\nIt is a demo project to demonstrate a bug with integration between `RecyclerView` and accessibility.\n\n## Bug\n\nWhen `RecyclerView` prefetches future `ViewHolder` via `GapWorker` sometimes it does not invoke bind\nmethod. When such `ViewHolder` is recycled, `ViewCompat.setAccessibilityDelegate` is invoked\npassing `null` as a parameter, leading to losing original accessibility delegate, that was set\non `ViewHolder` view.\n\nIt does not happen with a regular (non-prefetch) flow because `bind` method is always invoked, and\nthe original delegate is stored.\n\n## Steps\n\n1. Start the app.\n2. Scroll.\n3. See a crash at `CustomView.setAccessibilityDelegate` or `Adapter.onBindViewHolder` because the\n   view delegate is neither `RecyclerView` accessibility delegate nor the original custom one. It\n   was lost during prefetch by `GapWorker`.\n\n## License\n\n```\nCopyright 2022 Bumble\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbumble-tech%2Frecyclerviewaccessibilitybug","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbumble-tech%2Frecyclerviewaccessibilitybug","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbumble-tech%2Frecyclerviewaccessibilitybug/lists"}