🔍 Advanced Search Extension by Glich

🔍 AdvancedSearch

An extension for MIT App Inventor 2.
Advanced search extension with multiple filters and fast searching.

Intro:

Speed up your apps with powerful and flexible search capabilities!
The Advanced Search extension helps you quickly search lists, filter JSON, highlight results, and even perform background (async) searches without freezing your UI.

Whether you’re making a contact list, book app, product filter, or massive search engine inside your app — this extension is built to scale :fire:

:rocket: Features

  • Super-fast searching even in large lists
  • Search in plain lists, dictionaries, or JSON
  • Full support for case sensitivity, starts with / ends with
  • Background (async) search — no UI lag!
  • Highlight matching parts of results
  • Optional sorting by relevance or length

:brick: Blocks & Usage


:small_blue_diamond: SearchList

SearchList(list, query, caseSensitive, partialMatch, startsWith, endsWith, sortResults)
Performs a custom search in a list of strings.

Example:

SearchList(["Apple", "Banana", "Apricot"], "ap", false, true, true, false, true)
→ Returns: ["Apple", "Apricot"]

:small_blue_diamond: SearchListByKey

SearchListByKey(list of dictionaries, key, query, caseSensitive, partialMatch)
Search inside a specific key of a dictionary list.

Example:

List = [{name: "Alex"}, {name: "Alice"}, {name: "Bob"}]
SearchListByKey(List, "name", "Al", false, true)
→ Returns: ["Alex", "Alice"]

:small_blue_diamond: SearchJsonByKey

SearchJsonByKey(jsonString, key, query, caseSensitive, partialMatch)
Search a key in JSON Array strings.

Example:

[
  {"title": "Hello World"},
  {"title": "World News"},
  {"title": "Hello Kodular"}
]
SearchJsonByKey(json, "title", "world", false, true)
→ Returns: ["Hello World", "World News"]

:small_blue_diamond: HighlightMatch

HighlightMatch(text, query, prefix, suffix, caseSensitive)
Highlights the part of text that matches the query.

Example:

HighlightMatch("Welcome to Kodular", "kodular", "<b>", "</b>", false)
→ "Welcome to <b>Kodular</b>"

Perfect for showing matched keywords in search results!


:small_blue_diamond: SortList
SortList_Method

SortList(list, byLength)
Sorts the list alphabetically or by string length.

Example:

SortList(["Banana", "Kiwi", "Apple"], false)
→ ["Apple", "Banana", "Kiwi"]

SortList(["Banana", "Kiwi", "Apple"], true)
→ ["Kiwi", "Apple", "Banana"]

:small_blue_diamond: SearchListAsync

SearchListAsync(list, query, caseSensitive, partialMatch)
Performs background search (non-blocking).
Use with the SearchCompleted event.

Example:

Call SearchListAsync with:
List = BigList
Query = "data"
CaseSensitive = false
PartialMatch = true

:small_orange_diamond: SearchCompleted (Event)
SearchCompleted_Event

SearchCompleted(resultList)
Called when SearchListAsync finishes.
Use this to update your UI.

When SearchCompleted do
→ Set ListView.Elements to resultList

:light_bulb: Ideal Use Cases

  • Contact search
  • Product filtering
  • Dictionary/Glossary apps
  • JSON search engines
  • Chat history filter
  • Live search with async update

:memo: Specifications


:package: Package: com.glich.advancedsearch
:floppy_disk: Size: 9.52 KB
:mobile_phone: Minimum API Level: 7
:date: Updated On: 2025-07-24T18:00:00Z
:laptop: Built & documented using: FAST-CLI

Download :

com.glich.advancedsearch.aix (9.5 KB)


:package: Ready to supercharge your app?

Drop this extension in, and let your users search smarter and faster.

If you want even more—like fuzzy search, live debounce, or multi-key filters—just comment and I’ll bring updates soon! :rocket:If you ,Like it Leave :heart: and comment it.

Thanks ,
Mahir

7 Likes

Awesome Extension :rocket:, you can update this block image :magnifying_glass_tilted_right:

1 Like

Greatest extension ever @Glich :fire:.

1 Like

@Glich Can You Please tell me how can i do this with your Extension ?

My data is :

Do It Result: ({“last-caller-id”:“BC:98:89:59:F2:F5”,“caller-id”:“”,“last-logged-out”:“oct/06/2025 16:03:29”,“profile”:“5 MB”,“.id”:“*235”,“limit-bytes-out”:“0”,“last-disconnect-reason”:“hung-up”,“limit-bytes-in”:“0”,“routes”:“”,“password”:“123”,“service”:“pppoe”,“name”:“abbaskh”,“disabled”:“false”,“ipv6-routes”:“”} {“last-caller-id”:“74:DA:DA:5C:20:43”,“caller-id”:“”,“last-logged-out”:“oct/06/2025 04:21:09”,“profile”:“5 MB”,“.id”:“*239”,“limit-bytes-out”:“0”,“last-disconnect-reason”:“hung-up”,“limit-bytes-in”:“0”,“routes”:“”,“password”:“123”,“service”:“pppoe”,“name”:“amjadgo”,“disabled”:“false”,“ipv6-routes”:“”} {“last-caller-id”:“C8:3A:35:40:0E:10”,“caller-id”:“”,“last-logged-out”:“aug/10/2025 17:52:41”,“profile”:“NON-PAYMENT”,“.id”:“*23C”,“limit-bytes-out”:“0”,“last-disconnect-reason”:“hung-up”,“limit-bytes-in”:“0”,“routes”:“”,“password”:“123”,“service”:“pppoe”,“name”:“asif gh”,“disabled”:“false”,“ipv6-routes”:“”} {“last-caller-id”:“04:FE:8D:DD:17:D2”,“caller-id”:“”,“last-logged-out”:“oct/07/2025 00:41:28”,“profile”:“5 MB”,“.id”:“*23E”,“limit-bytes-out”:“0”,“last-disconnect-reason”:“hung-up”,“limit-bytes-in”:“0”,“routes”:“”,“password”:“123”,“service”:“pppoe”,“name”:“babershr”,“disabled”:“false”,“ipv6-routes”:“”} {“last-caller-id”:“E8:65:D4:54:2D:70”,“caller-id”:“”,“last-logged-out”:“oct/06/2025 19:23:16”,“profile”:“20 MB”,“.id”:“*242”,“limit-bytes-out”:“0”,“last-disconnect-reason”:“nas-request”,“limit-bytes-in”:“0”,“routes”:“”,“password”:“123”,“service”:“pppoe”,“name”:“faizan2shr”,“disabled”:“false”,“ipv6-routes”:“”} {“last-caller-id”:“EC:AD:E0:F2:B7:EA”,“caller-id”:“”,“last-logged-out”:“oct/05/2025 22:36:26”,“profile”:“5 MB”,“.id”:“*243”,“limit-bytes-out”:“0”,“last-disconnect-reason”:“hung-up”,“limit-bytes-in”:“0”,“routes”:“”,“password”:“123”,“service”:“pppoe”,“name”:“farakhgh”,“disabled”:“false”,“ipv6-routes”:“”}

Hey @Mr_YouTuber_Official
You can go with this

Do It Result: (abbaskh asif gh)

If you leave the query empty, the result will be shown like this:
Do It Result: (abbaskh amjadgo asif gh babershr faizan2shr farakhgh)
Anyways, thanks for the comment :slight_smile:

1 Like

I tried this with my data , but error happend ..

But after adding this block it work..

1 Like