PremiumCardViews (FREE)

PremiumCardViews is a powerful extension for creating interactive modal dialogs with cards based on any JSON data. Designed for MIT App Inventor developers, Kodular who want to quickly display catalogs, media content, or lists with a clean and modern UI.

  • Key Features:
    • :bar_chart: Universal JSON Parser: Automatically handles any complex structures (nested objects, arrays, items, videos, media lists).
    • :clapper_board: Multimedia Cards: Built-in video player, photo viewer, and support for previews/posters.
    • :control_knobs: Flexible Grid: Ability to switch between a single-column list and a 2-column grid directly inside the dialog.
    • :inbox_tray: File Downloads: Built-in support for downloading media files and documents via the system DownloadManager.
    • :prohibited: Ad Filtering: Automatically hides ad blocks (type: ad or yandex_rtb).
  • How the keys Parameter Works (Hiding Fields):
    • The keys parameter accepts a comma-separated list of keys (e.g., url, title).
    • During JSON processing, the extension checks each field key. If a key matches any entry in the string (case-insensitive), that field is completely removed from the card and hidden from the user, leaving the core parsing logic and other data intact.
  • Handling Objects and Arrays:
    • Objects (JSONObject): Recursively scanned for nested keys and values, flattening them into structured card attributes.
    • Arrays (JSONArray): Array items are either joined by line breaks or intelligently split into separate cards (e.g., when multiple media items are present).

Root Array
A standard format where the root element is an array ([…]) containing a set of objects with arbitrary keys. The extension sequentially processes each item.

JSON
[
  {
    "title": "Card Title 1",
    "description": "Text description of the first item",
    "photo": "https://example.com/img1.jpg"
  },
  {
    "title": "Card Title 2",
    "video": "https://example.com/video.mp4"
  }
]`

Wrapped Array
A format where the root element is an object ({…}) containing a data array inside keys like items, videos, media, cards, output, or data.


JSON
{
  "status": "success",
  "items": [
    {
      "title": "Catalog Product",
      "price": "99$",
      "image": "https://example.com/item.jpg"
    }
  ]
}


API Envelope (Wrapped Response)
The extension automatically handles API responses where useful data is wrapped inside a service envelope containing statuses, metadata, or nested objects.

How it works: If the root object contains a data field as a nested object, the parser automatically dives into it. It then scans for keys (items, videos, media, cards, output) or finds the first available JSONArray.

Example structure:


JSON
{
  "status": "success",
  "code": 200,
  "message": "OK",
  "data": {
    "items": [
      {
        "title": "Item inside envelope",
        "description": "Data successfully extracted from wrapper",
        "photo": "https://example.com/image.jpg"
      }
    ]
  }
}

Single Object (Flat Card)
If the JSON is a single object without nested lists, the extension automatically recognizes it and forms a single modal card.


JSON
{
  "title": "Profile Information",
  "bio": "App Developer",
  "avatar": "https://example.com/avatar.png"
}

Primitive Array
If the array consists of simple text elements instead of objects, each element is automatically converted into a basic text card.


JSON
[
  "First line of text data",
  "Second line of text data"
]


com.premiumcardciews.premiumcardviews.aix (31.3 KB)

Created with: FAST

====================================

Paid version

• :musical_note: Integrated Audio Player: built-in player for listening to music and podcasts directly from cards with a progress SeekBar and play/pause controls.

• :artist_palette: Text & Color Customization: full UI styling — easily change card backgrounds, headers, body text, and button colors, as well as modify button labels (e.g., custom text for “Close” and “Download”).
• :puzzle_piece: New Blocks & Functions:

  • CreateCardView(jsonString, keys) — the core function that accepts any complex JSON, parses it into cards, and hides comma-separated keys.
  • CardClicked(title, url) — event triggered when tapping a card; returns the card title and direct media URL.
  • DownloadStarted(url) — event fired when a file download begins via the system DownloadManager.
  • Color Properties (CardBackgroundColor, ButtonColor, TitleTextColor, NormalTextColor) — blocks for full palette control.
  • • :page_facing_up: Pagination (Lazy Loading): loads items in batches of 15 during scrolling to prevent UI lag and OutOfMemory errors when handling large JSON arrays.
  • • :high_voltage: Performance: optimized list rendering and overall stability.
  • • :hammer_and_wrench: Bug Fixes: resolved Android compilation errors and compatibility issues.
  • • :high_voltage: Improved overall app performance and stability.
    • :hammer_and_wrench: Fixed compilation errors and critical Android compatibility bugs.
    • :sparkles: Optimized card views and user interface elements.
    :magnifying_glass_tilted_left: Live Search: built-in search bar with instant real-time filtering of cards across any text field.

Price: $5.
To purchase, message me in this thread or via private message.

1 Like

You didn’t explain to the user how to get the extension

If something doesn’t work, let me know and I’ll fix the code.

How do you just show the card, without the “Card Viewer wrapper”?
How do you set the options: Grid, Photo Card, Download button, without the “Card Viewer wrapper” ?

?

Yes, all that stuff. Just want to display the card from the json ?

What’s New in this Update I have a paid version

  • :flower_playing_cards: Card Corner Radius: Added a new configuration block to customize and style card corner radiuses.
  • :triangular_ruler: Two-Column Grid View: Added functionality to display cards in a clean, compact two-column grid layout for Vertical_Scroll_Arrangement1.
  • :inbox_tray: Direct Download Buttons: Integrated one-click download buttons on cards for quick saving of files, videos, and media for Vertical_Scroll_Arrangement1.
  • :scroll: Layout Container Rendering: Added a block to render and output generated cards directly into custom layout containers (such as Vertical_Scroll_Arrangement1).

Block Descriptions:

  • CardCornerRadiusControls the corner radius of cards. Allows you to customize the interface appearance, making corners smoother or sharper to match your design and overall app style.
  • EnableTwoColumnsGridEnables or disables a two-column grid view for cards. Useful for creating compact catalogs, lists, or galleries where saving vertical screen space is needed.
  • EnableDownloadButtonsActivates or hides one-click download buttons for files, audio, or video directly on cards. Users can download media content in one click with automatic saving to the system “Downloads” folder.
  • CreateCardsInLayoutAllows JSON-generated cards to be rendered directly into a specified layout container (such as VerticalScrollArrangement) instead of a modal dialog window. This provides complete freedom in screen design and card integration into the overall app structure.


I’ll remove this message later. Just paste the JSON response, and the extension will extract all the data. For the data you want to hide, simply list the keys separated by commas, and the extension will hide those fields from the cards.

Looking much better and more usable in projects.

I see in your images that photo card or video card banners are still there. Option or show or hide these too ?

“All possibilities are limited only by imagination. Anything is possible.”