I've spent way too long on this to not seek help. I'm retrieving KML files from SPC Shapefile/KML Links. Every time I draw these files, only the geometry held within the first placemark of the file is added to the KML layer. For reference, these KML files have the following structure:
Document / Folder (one or two) / Placemarks (multiple)
This is frustrating because through some exploration, I can find the geometry from each KML placemark at the android runtime, but I still can't plot it as a layer. It is also important to note that the first placemark of all the root folders will be drawn. So if there are 2 folders each containing 5 placemarks, I'll get 2 layers added, not 10 like I would prefer.
@Override
<SPAN class="keyword token">protected</SPAN> <SPAN class="keyword token">void</SPAN> <SPAN class="token function">onCreate</SPAN><SPAN class="punctuation token">(</SPAN>Bundle savedInstanceState<SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="comment token">//SetLicense removed for privacy </SPAN>
<SPAN class="keyword token">super</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">onCreate</SPAN><SPAN class="punctuation token">(</SPAN>savedInstanceState<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="token function">setContentView</SPAN><SPAN class="punctuation token">(</SPAN>R<SPAN class="punctuation token">.</SPAN>layout<SPAN class="punctuation token">.</SPAN>activity_maps<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
mMapView <SPAN class="operator token">=</SPAN> <SPAN class="token function">findViewById</SPAN><SPAN class="punctuation token">(</SPAN>R<SPAN class="punctuation token">.</SPAN>id<SPAN class="punctuation token">.</SPAN>mapView<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="token function">setupMap</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
Button outlookButton <SPAN class="operator token">=</SPAN> <SPAN class="token function">findViewById</SPAN><SPAN class="punctuation token">(</SPAN>R<SPAN class="punctuation token">.</SPAN>id<SPAN class="punctuation token">.</SPAN>otlkBtn<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
outlookButton<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setOnClickListener</SPAN><SPAN class="punctuation token">(</SPAN>v <SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="token function">getKmlData</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"https://www.spc.noaa.gov/products/outlook/day1otlk_cat.kml"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">private</SPAN> <SPAN class="keyword token">void</SPAN> <SPAN class="token function">setupMap</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="punctuation token">(</SPAN>mMapView <SPAN class="operator token">!=</SPAN> null<SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="comment token">// Get Map Style</SPAN>
String myLayerId <SPAN class="operator token">=</SPAN> <SPAN class="string token">"9b7f5bb66660427eae788a0a9097c8a8"</SPAN><SPAN class="punctuation token">;</SPAN>
Portal portalService <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Portal</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"https://www.arcgis.com"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="token boolean">false</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
PortalItem portalItemLayer <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">PortalItem</SPAN><SPAN class="punctuation token">(</SPAN>portalService<SPAN class="punctuation token">,</SPAN> myLayerId<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
ArcGISVectorTiledLayer myCustomTileLayer <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN>
<SPAN class="token class-name">ArcGISVectorTiledLayer</SPAN><SPAN class="punctuation token">(</SPAN>portalItemLayer<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
ArcGISMap map <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">ArcGISMap</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Basemap</SPAN><SPAN class="punctuation token">(</SPAN>myCustomTileLayer<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
mMapView<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setMap</SPAN><SPAN class="punctuation token">(</SPAN>map<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
mMapView<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setAttributionTextVisible</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token boolean">false</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="token function">setupLocationDisplay</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">private</SPAN> <SPAN class="keyword token">void</SPAN> <SPAN class="token function">getKmlData</SPAN><SPAN class="punctuation token">(</SPAN>String url<SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
KmlDataset kmlDataset <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KmlDataset</SPAN><SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
KmlLayer kmlLayer <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KmlLayer</SPAN><SPAN class="punctuation token">(</SPAN>kmlDataset<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">//</SPAN>
<SPAN class="keyword token">for</SPAN> <SPAN class="punctuation token">(</SPAN>KmlNode node <SPAN class="operator token">:</SPAN> kmlDataset<SPAN class="punctuation token">.</SPAN><SPAN class="token function">getRootNodes</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">for</SPAN> <SPAN class="punctuation token">(</SPAN>KmlNode subnode <SPAN class="operator token">:</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>KmlDocument<SPAN class="punctuation token">)</SPAN> node<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">getChildNodes</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">if</SPAN><SPAN class="punctuation token">(</SPAN>subnode <SPAN class="keyword token">instanceof</SPAN> <SPAN class="token class-name">KmlFolder</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">for</SPAN> <SPAN class="punctuation token">(</SPAN>KmlNode subsubnode <SPAN class="operator token">:</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>KmlFolder<SPAN class="punctuation token">)</SPAN> subnode<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">getChildNodes</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
subsubnode<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setVisible</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token boolean">true</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="punctuation token">(</SPAN>subsubnode <SPAN class="keyword token">instanceof</SPAN> <SPAN class="token class-name">KmlPlacemark</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN>
System<SPAN class="punctuation token">.</SPAN>out<SPAN class="punctuation token">.</SPAN><SPAN class="token function">println</SPAN><SPAN class="punctuation token">(</SPAN>subsubnode<SPAN class="punctuation token">.</SPAN><SPAN class="token function">getSnippet</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
System<SPAN class="punctuation token">.</SPAN>out<SPAN class="punctuation token">.</SPAN><SPAN class="token function">println</SPAN><SPAN class="punctuation token">(</SPAN>subsubnode<SPAN class="punctuation token">.</SPAN><SPAN class="token function">getName</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
subsubnode<SPAN class="punctuation token">.</SPAN><SPAN class="token function">setVisible</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="token boolean">true</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
mMapView<SPAN class="punctuation token">.</SPAN><SPAN class="token function">getMap</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">getOperationalLayers</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">add</SPAN><SPAN class="punctuation token">(</SPAN>KmlLayer<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
mMapView<SPAN class="punctuation token">.</SPAN><SPAN class="token function">getMap</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">getOperationalLayers</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">add</SPAN><SPAN class="punctuation token">(</SPAN>kmlLayer<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>The result is this:

When the desired output should look like this:
As you can see, only the Marginal Risk layer is drawn. The data for the Marginal Risk layer is held in the first placemark in the following file. The General Thunderstorm data is the larger polygon and is contained in the second placemark.
Any help would be greatly appreciated. I've switched back and forth between several APIs regarding this anomaly.