Admittedly, this is a very lacking implementation, but it was a hard lesson learned in the process. This project will first cover the bare basics of the goals of this project, then delving into thoughts and improvements for next time.
Goals of the Solar App
When this project came to mind, I immediately thought to implement a simple, pragmatic approach. Input immediately, get results immediately back, while utilizing the touch technology. Thus, dropdown menus were a nono, while implementing a real-time updating aspect to the app to eliminate the need for an "enter" button.
Both of these were partially achieved. The input updates as the text fields change (for the left side), and the drop-down menus were replaced by customizing the NumberPicker widget to use text values.
However, troubles arose when more complex features came to arise, which took up most of my debugging time and ultimately served me a hard lesson in overestimating time.
Struggles with Implementation
Originally, the app was planned for two more features: real-time updating when changing the right field--achieving a "this statement is always true" effect--as well as real-time updating when spinning the NumberPicker widgets.
The right field was troublesome in implementation--since I was using an event listener to look for when the text fields changed, there would be an endless feedback loop if those listeners 'listened' to one another. The app continued to crash despite workarounds, so that feature had to be abandoned.
The NumberPicker widgets updating in real-time was also a struggle, mainly because of the lack of support and documentation on creative uses of this Widget. More documentation has been applied to spinners and date-setting pickers, but not many of them illustrated ways to create a listener that would update in real-time, all without spamming the outputs (aka, update when the spinning "ends"). This struggle without documentation or methods was a letdown.
Lessons Learned
Never underestimating the complexity of a project, especially when trying out novel ideas. It would've been easy enough to have implemented an interface that showed all the planets at once with a submit button, but the real-time updating implementation was much harder than I initially believed. Add onto that the struggles with using NumberPicker in an unorthodox way, and you get a Friday night still trying to find those methods you're looking for.
That's not a mistake I'm making again.
Comments