Xojo 2023r2: A Review and Demo of an Android NetSuite Inventory App

Published on August 21, 2023.

I recently described Xojo's 2023 Release 2 (Xojo 2023r2) as one of the most important and significant releases in the company's history. With its enhancements (including a new PDFViewer for iOS projects and Dark Mode support for web projects), new features (including DesktopXAMLContainer support), and bug fixes, this is a solid release.

But it's Xojo's new Android support that really steals the show. While Xojo testers have had access to private betas of the framework for quite awhile, Xojo 2023r2 provides the first public beta of Xojo's long-awaited and highly anticipated Android framework.

It was a little over a year ago that I wrote about some of my early testing of the Android framework. I demonstrated a simple Android app that provides access to job status information in Tulip.

The framework has come a long, long way since then. I recently had an opportunity to explore the latest version, and I thought I'd share my experience and observations after having built another app with it.

About The App

The Android app that I developed provides users with the ability to lookup inventory items in NetSuite. You can search for items using keywords, and items that meet their criteria are displayed in a table. By clicking on a table row, more detailed information about the item is displayed.

Here's a short animation showing the app.

Click the image to view a larger version.

SuiteAPI

Behind the scenes, I'm using a slightly customized version of SuiteAPI, my open source, alternative Web API for the NetSuite platform. The customization includes a procedure that processes a search request. It's essentially a SuiteQL query that looks for items those Item IDs or display names include the specified keywords.

SuiteAPI Relay

The Android app integrates with SuiteAPI using SuiteAPI Relay, a Xojo-based middleware app that I've recently developed. SuiteAPI Relay receives requests from front end apps (desktop, mobile, and/or Web apps) authenticates them using basic access authentication, sends authenticated requests to SuiteAPI, and then returns SuiteAPI's responses. By using this middleware layer, I'm preventing direct access to the NetSuite instance, and providing an easy way for front end apps to integrate with NetSuite.

SuiteAPI Relay is a Xojo Web 2.0 project, and it uses something that I've been calling the Xojo Web Service (XWS) framework. The app is hosted on an Amazon Lightsail server, and it is running behind NGINX. NGINX is serving as a reverse proxy server, and it provides features and capabilities such as caching, rate limiting, and so on.

The Xojo Android Project

The Xojo Android project consists of two screens. One is used to display the search controls (a MobileTextField and MobileButton) and the list of items (an AndroidMobileTable). The other screen is used to display the item's details (via a MobileHTMLViewer).

To perform a search, a request is sent to SuiteAPI Relay using an asynchronous URLConnection. If a search request is successful, then the response includes an array of JSONItems, which the app unpacks into the table. I'm storing each item's JSONItem in the row's RowTag, which is fast and efficient.

To drill into the details of an item, the user clicks on an item's row in the table. This triggers the table's SelectionChanged event, which in turn displays the second screen. When the second screen is activated, it reaches back to the first screen to get the selected item's JSONitem. It does this by referring to first screen's table. It uses the table's SelectedRowIndex value to identify the selected row, and then the RowTagAt function to get the item's JSONItem. Here's the code in the second screen's Activated event handler:

Var ItemInfo As JSONItem = Screen1.ItemTable.RowTagAt( Screen1.ItemTable.SelectedRowIndex )

A button on the second screen gives the user a way to return to the first screen. It's simply closing the second screen.

As far as the Xojo project goes, that's really all there is to it. It's remarkably simple.

Here's a screen shot of the project as it appears in the Xojo IDE.

Click the image to view a larger version.

Thoughts and Observations

As I mentioned earlier, Xojo 2023r2's Android support is a beta release. While I did run into one minor technical issue (involving character encoding), I believe the framework is off to a very solid start.

Developers who are experienced with Xojo's other frameworks (especially the iOS framework) are going to feel right at home with the new Android framework. Developing Android apps is, for the most part, very much like developing apps for any of Xojo's other targets (desktop, Web, and iOS) and platforms (macOS, Windows, Linux, and iOS). Most of the framework's controls are similar to those available in the other frameworks, and it's certainly possible to reuse code written for other project types. (For example, I've been able to reuse one of my custom NetSuite integration classes.)

Having used 2023r2 for a few weeks now, it's obvious to me that the Xojo team has put a lot of hard work into this release in general, and into the new Android framework in particular. I believe that hard work is going to payoff, and my hope is that the Android support will attract many new developers to the Xojo community.

Xojo 2023r2's Android support moves the company one giant step closer to achieving its long term goal of providing "a powerful cross-platform development tool and programming language." I'm excited to see the framework continue to evolve.

About Me

Hello, I'm Tim Dietrich. I develop custom software for businesses that are running on NetSuite, including mobile apps, Web portals, Web APIs, and more.

I'm the developer of several popular NetSuite open source solutions, including the SuiteQL Query Tool, SuiteAPI, and more.

I founded SuiteStep, a NetSuite development studio, to provide custom software and AI solutions - and continue pushing the boundaries of what's possible on the NetSuite platform.

Copyright © 2025 Tim Dietrich.