{"adoption": {"forks": 254, "observed_at": "2026-08-28T04:03:17.299681+00:00", "stars": 1028}, "canonical_url": "https://ross.abutalabs.com/products/stickyscrollviewitems", "card": {"archived": false, "artifact_type": "library", "description": "A small android library for tagging views inside a ScrollView as \"sticky\" making them stick to the top of the scroll container until a new sticky view comes and takes it's place", "domain": ["mobile-development", "android-tools"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["emilsjolander/StickyScrollViewItems"], "name": "emilsjolander/StickyScrollViewItems", "platform": ["jvm"], "pushed_at": "2022-04-22T05:55:05+00:00", "repo": "emilsjolander/StickyScrollViewItems", "stars": 1028, "tags": ["scrollview", "sticky-headers", "android-ui", "java", "android"], "topics": [], "urls": [], "use_cases": ["make section headers stick while scrolling in android", "pin a view to top of scrollview", "android scrollview with sticky headers", "sticky list section dividers in a scroll view", "keep a toolbar visible while scrolling content"], "what_it_is": "A small Android library providing a ScrollView subclass that lets you tag child views as 'sticky' so they pin to the top of the scroll container until replaced by the next sticky view. It is configured entirely via XML tag attributes.", "when_to_avoid": ["you need sticky headers in RecyclerView or ListView (use dedicated adapters instead)", "you are starting a new project and prefer modern AndroidX components", "you need complex multi-section sticky behavior beyond simple top-pinning"], "when_to_choose": ["you use a plain ScrollView and want simple sticky headers via XML tags", "you want a lightweight drop-in replacement for ScrollView", "you need sticky views with transparency or dynamic states handled"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/stickyscrollviewitems", "repo": "emilsjolander/StickyScrollViewItems", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.299681+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:07:45.062620+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8a2c35be9db7df951f3e691fb77a9727b00147c5a75a2c5b96cf84b7d939b8c", "fetched_at": "2026-08-28T04:03:17.299681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/emilsjolander/StickyScrollViewItems"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5211, "days_push": 1594, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}