<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Populate AlertDialog from Webservice layer? in ArcGIS Runtime SDK for Android Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403811#M2737</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: tmsbn90&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; I've tried everything. I can't get it to work.&amp;nbsp;&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;My Alertdialog will not populate with the names of locations, from the Name field, from my layer, within a map service.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;What am I doing wrong SPECIFICALLY?&amp;nbsp;&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;FYI - I've referred to the query example.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Any help is appreciated.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Thanks,&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;This is my new code:&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &lt;PRE class="lia-code-sample line-numbers language-none"&gt;

package com.dhec.MPOS;

import com.esri.android.map.MapView;
import com.esri.core.geometry.Envelope;
import com.esri.core.geometry.SpatialReference;
import com.esri.core.map.FeatureSet;
import com.esri.core.map.Graphic;
import com.esri.core.tasks.ags.query.Query;
import com.esri.core.tasks.ags.query.QueryTask;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

//MapScreen is a subclass of Activity.
public class MapScreen extends Activity {

 public MapView map;
 String targetServerURL = "&lt;SPAN style="color:&amp;quot;#0000FF&amp;quot;;"&gt;MAP SERVER HERE&lt;/SPAN&gt;";

 /*
&amp;nbsp; * Called when the Activity is first created. Remember the Activity and its
&amp;nbsp; * methods are created first. Then the MapScreen class is used.
&amp;nbsp; */
 public void onCreate(Bundle savedInstanceState) {
&amp;nbsp; super.onCreate(savedInstanceState);
&amp;nbsp; setContentView(R.layout.mapscreen);

&amp;nbsp; map = (MapView) findViewById(R.id.map);

 }

 public boolean onCreateOptionsMenu(Menu menu) {
&amp;nbsp; MenuInflater inflater = getMenuInflater();
&amp;nbsp; inflater.inflate(R.menu.actionbar_menu, menu);
&amp;nbsp; return true;
 }

 public boolean onOptionsItemSelected(MenuItem item) {
&amp;nbsp; switch (item.getItemId()) {

&amp;nbsp; case R.id.SearchTool:
&amp;nbsp;&amp;nbsp; String targetLayer = targetServerURL;
&amp;nbsp;&amp;nbsp; String[] queryParams = { targetLayer, "Name" };
&amp;nbsp;&amp;nbsp; AsyncQueryTask ayncQuery = new AsyncQueryTask();
&amp;nbsp;&amp;nbsp; ayncQuery.execute(queryParams);
&amp;nbsp; }
&amp;nbsp; return false;
 }

 private class AsyncQueryTask extends AsyncTask&amp;lt;String, Void, FeatureSet&amp;gt; {
&amp;nbsp; /**
&amp;nbsp;&amp;nbsp; * First member in parameter array is the query URL; second member is
&amp;nbsp;&amp;nbsp; * the where clause.
&amp;nbsp;&amp;nbsp; */
&amp;nbsp; protected FeatureSet doInBackground(String... queryParams) {
&amp;nbsp;&amp;nbsp; if (queryParams == null || queryParams.length &amp;lt;= 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;

&amp;nbsp;&amp;nbsp; String url = queryParams[0];
&amp;nbsp;&amp;nbsp; Query query = new Query();
&amp;nbsp;&amp;nbsp; String whereClause = queryParams[1];
&amp;nbsp;&amp;nbsp; query.setOutFields(queryParams);
&amp;nbsp;&amp;nbsp; SpatialReference sr = SpatialReference.create(4326);
&amp;nbsp;&amp;nbsp; query.setGeometry(new Envelope(-9246560.42264577, 3775709.72082467,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -8746857.60892366, 4180002.76740144));
&amp;nbsp;&amp;nbsp; query.setOutSpatialReference(sr);
&amp;nbsp;&amp;nbsp; query.setReturnGeometry(true);
&amp;nbsp;&amp;nbsp; query.setWhere(whereClause);
&amp;nbsp;&amp;nbsp; QueryTask qTask = new QueryTask(url);
&amp;nbsp;&amp;nbsp; FeatureSet fs = null;

&amp;nbsp;&amp;nbsp; try {
&amp;nbsp;&amp;nbsp;&amp;nbsp; fs = qTask.execute(query);
&amp;nbsp;&amp;nbsp; } catch (Exception e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp; return fs;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; return fs;

&amp;nbsp; }

&amp;nbsp; protected void onPostExecute(FeatureSet result) {
&amp;nbsp;&amp;nbsp; Object location1 = null;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; String message = "No result comes back";
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; Graphic[] grs = result.getGraphics();
&amp;nbsp;&amp;nbsp; if (result != null &amp;amp;&amp;amp; grs.length &amp;gt; 0){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt;= grs.length; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic g = grs&lt;I&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; location1 = g.getAttributeValue("Name");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MapScreen.this);
&amp;nbsp;&amp;nbsp; String[] location2 = { location1.toString() };
&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location:");
&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(marinas, new DialogInterface.OnClickListener() {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do something once clicked
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();
&amp;nbsp;&amp;nbsp; alertDialog.show();&amp;nbsp; 
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; else{
&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast toast = Toast.makeText(MapScreen.this, message,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.LENGTH_LONG);
&amp;nbsp;&amp;nbsp;&amp;nbsp; toast.show();
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
 
&amp;nbsp; }
 }
}

&lt;/I&gt;&lt;/PRE&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;This is my log cat:&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &lt;PRE class="lia-code-sample line-numbers language-none"&gt;

04-09 13:36:09.895: W/dalvikvm(15894): threadid=1: thread exiting with uncaught exception (group=0x40ab3210)
04-09 13:36:09.902: E/AndroidRuntime(15894): FATAL EXCEPTION: main
04-09 13:36:09.902: E/AndroidRuntime(15894): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.dhec.MPOS.MapScreen$AsyncQueryTask.onPostExecute(MapScreen.java:98)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.dhec.MPOS.MapScreen$AsyncQueryTask.onPostExecute(MapScreen.java:1)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask.finish(AsyncTask.java:602)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask.access$600(AsyncTask.java:156)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.Looper.loop(Looper.java:137)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.app.ActivityThread.main(ActivityThread.java:4722)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at java.lang.reflect.Method.invokeNative(Native Method)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at java.lang.reflect.Method.invoke(Method.java:511)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at dalvik.system.NativeStart.main(Native Method)

&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Check the for loop statement. Its supposed to be grs.length-1(you know.. because arrays go from 0 to length-1 &lt;span class="lia-unicode-emoji" title=":face_with_tongue:"&gt;😛&lt;/span&gt; )&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;for (int i = 0; i &amp;lt;= grs.length-1; i++) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Graphic g = grs&lt;I&gt;;&lt;/I&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; location1 = g.getAttributeValue("Name");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 18:24:07 GMT</pubDate>
    <dc:creator>Anonymous User</dc:creator>
    <dc:date>2021-12-11T18:24:07Z</dc:date>
    <item>
      <title>Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403805#M2731</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have an actionbar on may mapscreen. (Image 1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I select the search icon (or menu item) on my actionbar and alertdialog appears with names that I manually entered into my code (String Array).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How do I populate the alert dialog with location names (&lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;names from a layer in the mapservice that has a Names field&lt;/SPAN&gt;&lt;SPAN&gt;) from a map service layer? (Image 2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you could post some sample code and explain, that would be great.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;John&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Code: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;public boolean onCreateOptionsMenu(Menu menu) {
&amp;nbsp; MenuInflater inflater = getMenuInflater();
&amp;nbsp; inflater.inflate(R.menu.actionbar_menu, menu);&amp;nbsp; 
&amp;nbsp; return true;
 }
 
 public boolean onOptionsItemSelected(MenuItem item) {&amp;nbsp; 
&amp;nbsp; 
&amp;nbsp; switch (item.getItemId()){ 
&amp;nbsp; 
&amp;nbsp; case R.id.SearchTool: 
&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where I manually entered in my location names.
&amp;nbsp;&amp;nbsp; final String[] locations = {"Blue Water", "Big Fish ", "Beaverdam", "Wake", "Dock Side", "Oceanview", "Beach 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Front", "Lake Side", "Boaters Choice"};
&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location:");
&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(locations, new DialogInterface.OnClickListener() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Do something when location is selected within the alertdialog.
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();
&amp;nbsp;&amp;nbsp; alertDialog.show();&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 18:23:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403805#M2731</guid>
      <dc:creator>JohnAllen</dc:creator>
      <dc:date>2021-12-11T18:23:57Z</dc:date>
    </item>
    <item>
      <title>Re: Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403806#M2732</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: tmsbn90&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Run a query task on the layer. Put the query task methods inside the Async task class to avoid blocking the UI thread.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. queryTask.execute() method will return a featureset. From the featureset use featureSet.getGraphics() extract an array of graphics.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3.&amp;nbsp; You can call the getAttributeValue("YOUR_NAME_FIELD") method on each item of the array of graphics to get the names. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4. Put these names in an string array to use in your dialog builder.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this helps. See the query task sample for more info.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Apr 2013 05:37:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403806#M2732</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2013-04-02T05:37:26Z</dc:date>
    </item>
    <item>
      <title>Re: Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403807#M2733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thomas,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the information. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried implementing your steps into my code, but I when I select the search icon (menu item) my app crashes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Using graphic arrays and string arrays has me confused.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think I'm not doing something right with the onPostExecute or it might be that my query is jacked up.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Got any advice?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import com.esri.android.map.GraphicsLayer;
import com.esri.android.map.MapView;
import com.esri.core.map.FeatureSet;
import com.esri.core.map.Graphic;
import com.esri.core.tasks.ags.query.Query;
import com.esri.core.tasks.ags.query.QueryTask;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

//MapScreen is a subclass of Activity.
public class MapScreen extends Activity { 
 
 public MapView map;
 boolean AlrtDialogQeury = true; 
 GraphicsLayer gl;
 Graphic graphic;
 String targetServerURL = "MAP SERVICE URL";
 
 /* 
&amp;nbsp; Called when the Activity is first created.
&amp;nbsp; Remember the Activity and its methods are created
&amp;nbsp; first. Then the MapScreen class is used.&amp;nbsp; 
&amp;nbsp; */
 public void onCreate(Bundle savedInstanceState) {
&amp;nbsp; super.onCreate(savedInstanceState);
&amp;nbsp; setContentView(R.layout.mapscreen);&amp;nbsp; 
 
&amp;nbsp; map = (MapView) findViewById(R.id.map);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 }
 
 public boolean onCreateOptionsMenu(Menu menu) {
&amp;nbsp; MenuInflater inflater = getMenuInflater();
&amp;nbsp; inflater.inflate(R.menu.actionbar_menu, menu);&amp;nbsp; 
&amp;nbsp; return true;
 }
 
 public boolean onOptionsItemSelected(MenuItem item) {&amp;nbsp; 
&amp;nbsp; 
&amp;nbsp; switch (item.getItemId()){ 
&amp;nbsp; 
&amp;nbsp; case R.id.SearchTool: 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; String targetLayer = targetServerURL;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] queryParams = { targetLayer, "Name" };
&amp;nbsp;&amp;nbsp;&amp;nbsp; AsyncQueryTask ayncQuery = new AsyncQueryTask();
&amp;nbsp;&amp;nbsp;&amp;nbsp; ayncQuery.execute(queryParams);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; String location1 = graphic.getAttributeValue("Name").toString();
&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] location2 = {location1};
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location");
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(location2, new DialogInterface.OnClickListener() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Do something when clicked.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();
&amp;nbsp;&amp;nbsp;&amp;nbsp; alertDialog.show();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; return true;
&amp;nbsp;&amp;nbsp; 
 }
 
 private class AsyncQueryTask extends AsyncTask&amp;lt;String, Void, FeatureSet&amp;gt; { 

&amp;nbsp; protected FeatureSet doInBackground(String... queryParams) {
&amp;nbsp;&amp;nbsp; if (queryParams == null || queryParams.length &amp;lt;= 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;
&amp;nbsp;&amp;nbsp; //My query may be wrong.
&amp;nbsp;&amp;nbsp; String url = queryParams[0];
&amp;nbsp;&amp;nbsp; Query query = new Query();
&amp;nbsp;&amp;nbsp; String whereClause = queryParams[1];
&amp;nbsp;&amp;nbsp; query.setWhere(whereClause);

&amp;nbsp;&amp;nbsp; QueryTask qTask = new QueryTask(url);
&amp;nbsp;&amp;nbsp; FeatureSet fs = null;

&amp;nbsp;&amp;nbsp; try {
&amp;nbsp;&amp;nbsp;&amp;nbsp; fs = qTask.execute(query);
&amp;nbsp;&amp;nbsp; } catch (Exception e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp; return fs;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; return fs;

&amp;nbsp; }

&amp;nbsp; //I think this is where I can't make it work.
&amp;nbsp; protected void onPostExecute(FeatureSet fs) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; if (fs != null) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic[] grs = fs.getGraphics();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; gl.addGraphics(grs);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp; }
 }&amp;nbsp;&amp;nbsp; 
} &lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 16:26:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403807#M2733</guid>
      <dc:creator>JohnAllen</dc:creator>
      <dc:date>2021-12-12T16:26:17Z</dc:date>
    </item>
    <item>
      <title>Re: Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403808#M2734</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: tmsbn90&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; Thomas,&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Thanks for the information.&amp;nbsp;&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;I tried implementing your steps into my code, but I when I select the search icon (menu item) my app crashes.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Using graphic arrays and string arrays has me confused.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;I think I'm not doing something right with the onPostExecute or it might be that my query is jacked up.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Got any advice?&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Thanks for your help.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Here is my code:&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &lt;PRE class="lia-code-sample line-numbers language-none"&gt;import com.esri.android.map.GraphicsLayer;
import com.esri.android.map.MapView;
import com.esri.core.map.FeatureSet;
import com.esri.core.map.Graphic;
import com.esri.core.tasks.ags.query.Query;
import com.esri.core.tasks.ags.query.QueryTask;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

//MapScreen is a subclass of Activity.
public class MapScreen extends Activity { 
 
 public MapView map;
 boolean AlrtDialogQeury = true; 
 GraphicsLayer gl;
 Graphic graphic;
 String targetServerURL = "&lt;SPAN style="color:&amp;quot;#0000FF&amp;quot;;"&gt;MAP SERVICE URL&lt;/SPAN&gt;";
 
 /* 
&amp;nbsp; Called when the Activity is first created.
&amp;nbsp; Remember the Activity and its methods are created
&amp;nbsp; first. Then the MapScreen class is used.&amp;nbsp; 
&amp;nbsp; */
 public void onCreate(Bundle savedInstanceState) {
&amp;nbsp; super.onCreate(savedInstanceState);
&amp;nbsp; setContentView(R.layout.mapscreen);&amp;nbsp; 
 
&amp;nbsp; map = (MapView) findViewById(R.id.map);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 }
 
 public boolean onCreateOptionsMenu(Menu menu) {
&amp;nbsp; MenuInflater inflater = getMenuInflater();
&amp;nbsp; inflater.inflate(R.menu.actionbar_menu, menu);&amp;nbsp; 
&amp;nbsp; return true;
 }
 
 public boolean onOptionsItemSelected(MenuItem item) {&amp;nbsp; 
&amp;nbsp; 
&amp;nbsp; switch (item.getItemId()){ 
&amp;nbsp; 
&amp;nbsp; case R.id.SearchTool: 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; String targetLayer = targetServerURL;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] queryParams = { targetLayer, "Name" };
&amp;nbsp;&amp;nbsp;&amp;nbsp; AsyncQueryTask ayncQuery = new AsyncQueryTask();
&amp;nbsp;&amp;nbsp;&amp;nbsp; ayncQuery.execute(queryParams);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; String location1 = graphic.getAttributeValue("Name").toString();
&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] location2 = {location1};
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location");
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(location2, new DialogInterface.OnClickListener() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Do something when clicked.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();
&amp;nbsp;&amp;nbsp;&amp;nbsp; alertDialog.show();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; return true;
&amp;nbsp;&amp;nbsp; 
 }
 
 private class AsyncQueryTask extends AsyncTask&amp;lt;String, Void, FeatureSet&amp;gt; { 

&amp;nbsp; protected FeatureSet doInBackground(String... queryParams) {
&amp;nbsp;&amp;nbsp; if (queryParams == null || queryParams.length &amp;lt;= 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:&amp;quot;#FF0000&amp;quot;;"&gt;//My query may be wrong.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp; String url = queryParams[0];
&amp;nbsp;&amp;nbsp; Query query = new Query();
&amp;nbsp;&amp;nbsp; String whereClause = queryParams[1];
&amp;nbsp;&amp;nbsp; query.setWhere(whereClause);

&amp;nbsp;&amp;nbsp; QueryTask qTask = new QueryTask(url);
&amp;nbsp;&amp;nbsp; FeatureSet fs = null;

&amp;nbsp;&amp;nbsp; try {
&amp;nbsp;&amp;nbsp;&amp;nbsp; fs = qTask.execute(query);
&amp;nbsp;&amp;nbsp; } catch (Exception e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp; return fs;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; return fs;

&amp;nbsp; }

&amp;nbsp; &lt;SPAN style="color:&amp;quot;#FF0000&amp;quot;;"&gt;//I think this is where I can't make it work.&lt;/SPAN&gt;
&amp;nbsp; protected void onPostExecute(FeatureSet fs) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; if (fs != null) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic[] grs = fs.getGraphics();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; gl.addGraphics(grs);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp; }
 }&amp;nbsp;&amp;nbsp; 
} &lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Check the line &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;String location1 = graphic.getAttributeValue("Name").toString();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the value of graphic is null here because you are supposed to put this statement as well the alert dialog statements inside the onPostExecute method of the asyncClass task. You have written these statements just after initialising an asyntask object which is wrong because asynctask takes some time run the query method and return a result. Please read on the documentation of asynctask.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 18:24:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403808#M2734</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-11T18:24:00Z</dc:date>
    </item>
    <item>
      <title>Re: Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403809#M2735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I've tried everything. I can't get it to work. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My Alertdialog will not populate with the names of locations, from the Name field, from my layer, within a map service.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What am I doing wrong SPECIFICALLY? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FYI - I've referred to the query example.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help is appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is my new code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

package com.dhec.MPOS;

import com.esri.android.map.MapView;
import com.esri.core.geometry.Envelope;
import com.esri.core.geometry.SpatialReference;
import com.esri.core.map.FeatureSet;
import com.esri.core.map.Graphic;
import com.esri.core.tasks.ags.query.Query;
import com.esri.core.tasks.ags.query.QueryTask;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

//MapScreen is a subclass of Activity.
public class MapScreen extends Activity {

 public MapView map;
 String targetServerURL = "MAP SERVER HERE";

 /*
&amp;nbsp; * Called when the Activity is first created. Remember the Activity and its
&amp;nbsp; * methods are created first. Then the MapScreen class is used.
&amp;nbsp; */
 public void onCreate(Bundle savedInstanceState) {
&amp;nbsp; super.onCreate(savedInstanceState);
&amp;nbsp; setContentView(R.layout.mapscreen);

&amp;nbsp; map = (MapView) findViewById(R.id.map);

 }

 public boolean onCreateOptionsMenu(Menu menu) {
&amp;nbsp; MenuInflater inflater = getMenuInflater();
&amp;nbsp; inflater.inflate(R.menu.actionbar_menu, menu);
&amp;nbsp; return true;
 }

 public boolean onOptionsItemSelected(MenuItem item) {
&amp;nbsp; switch (item.getItemId()) {

&amp;nbsp; case R.id.SearchTool:
&amp;nbsp;&amp;nbsp; String targetLayer = targetServerURL;
&amp;nbsp;&amp;nbsp; String[] queryParams = { targetLayer, "Name" };
&amp;nbsp;&amp;nbsp; AsyncQueryTask ayncQuery = new AsyncQueryTask();
&amp;nbsp;&amp;nbsp; ayncQuery.execute(queryParams);
&amp;nbsp; }
&amp;nbsp; return false;
 }

 private class AsyncQueryTask extends AsyncTask&amp;lt;String, Void, FeatureSet&amp;gt; {
&amp;nbsp; /**
&amp;nbsp;&amp;nbsp; * First member in parameter array is the query URL; second member is
&amp;nbsp;&amp;nbsp; * the where clause.
&amp;nbsp;&amp;nbsp; */
&amp;nbsp; protected FeatureSet doInBackground(String... queryParams) {
&amp;nbsp;&amp;nbsp; if (queryParams == null || queryParams.length &amp;lt;= 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;

&amp;nbsp;&amp;nbsp; String url = queryParams[0];
&amp;nbsp;&amp;nbsp; Query query = new Query();
&amp;nbsp;&amp;nbsp; String whereClause = queryParams[1];
&amp;nbsp;&amp;nbsp; query.setOutFields(queryParams);
&amp;nbsp;&amp;nbsp; SpatialReference sr = SpatialReference.create(4326);
&amp;nbsp;&amp;nbsp; query.setGeometry(new Envelope(-9246560.42264577, 3775709.72082467,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -8746857.60892366, 4180002.76740144));
&amp;nbsp;&amp;nbsp; query.setOutSpatialReference(sr);
&amp;nbsp;&amp;nbsp; query.setReturnGeometry(true);
&amp;nbsp;&amp;nbsp; query.setWhere(whereClause);
&amp;nbsp;&amp;nbsp; QueryTask qTask = new QueryTask(url);
&amp;nbsp;&amp;nbsp; FeatureSet fs = null;

&amp;nbsp;&amp;nbsp; try {
&amp;nbsp;&amp;nbsp;&amp;nbsp; fs = qTask.execute(query);
&amp;nbsp;&amp;nbsp; } catch (Exception e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp; return fs;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; return fs;

&amp;nbsp; }

&amp;nbsp; protected void onPostExecute(FeatureSet result) {
&amp;nbsp;&amp;nbsp; Object location1 = null;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; String message = "No result comes back";
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; Graphic[] grs = result.getGraphics();
&amp;nbsp;&amp;nbsp; if (result != null &amp;amp;&amp;amp; grs.length &amp;gt; 0){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt;= grs.length; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic g = grs&lt;I&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; location1 = g.getAttributeValue("Name");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MapScreen.this);
&amp;nbsp;&amp;nbsp; String[] location2 = { location1.toString() };
&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location:");
&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(marinas, new DialogInterface.OnClickListener() {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do something once clicked
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();
&amp;nbsp;&amp;nbsp; alertDialog.show();&amp;nbsp; 
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; else{
&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast toast = Toast.makeText(MapScreen.this, message,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.LENGTH_LONG);
&amp;nbsp;&amp;nbsp;&amp;nbsp; toast.show();
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
 
&amp;nbsp; }
 }
}

&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is my log cat:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

04-09 13:36:09.895: W/dalvikvm(15894): threadid=1: thread exiting with uncaught exception (group=0x40ab3210)
04-09 13:36:09.902: E/AndroidRuntime(15894): FATAL EXCEPTION: main
04-09 13:36:09.902: E/AndroidRuntime(15894): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.dhec.MPOS.MapScreen$AsyncQueryTask.onPostExecute(MapScreen.java:98)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.dhec.MPOS.MapScreen$AsyncQueryTask.onPostExecute(MapScreen.java:1)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask.finish(AsyncTask.java:602)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask.access$600(AsyncTask.java:156)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.Looper.loop(Looper.java:137)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.app.ActivityThread.main(ActivityThread.java:4722)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at java.lang.reflect.Method.invokeNative(Native Method)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at java.lang.reflect.Method.invoke(Method.java:511)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at dalvik.system.NativeStart.main(Native Method)

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 16:26:20 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403809#M2735</guid>
      <dc:creator>JohnAllen</dc:creator>
      <dc:date>2021-12-12T16:26:20Z</dc:date>
    </item>
    <item>
      <title>Re: Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403810#M2736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ok, I finally got something to work. (Image3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I can return only one location name: Anchor Marina&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to return all the location names not just one. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've tried looping through the graphic array, but I couldn't get all my name values to return.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If someone could give me some pointers to have all my graphic names to appear I would appreciate it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's my onPostExecute for only one location to appear:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

protected void onPostExecute(FeatureSet result) {&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; if (result != null) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic[] graphics = result.getGraphics();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; gl.addGraphics(graphics);&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic g = graphics[0]; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; String location1 = (String) g.getAttributeValue("Name");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MapScreen.this); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] location2 = {location1};
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location:");
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(location2, new DialogInterface.OnClickListener() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do something once clicked
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; alertDialog.show();
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 18:24:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403810#M2736</guid>
      <dc:creator>JohnAllen</dc:creator>
      <dc:date>2021-12-11T18:24:03Z</dc:date>
    </item>
    <item>
      <title>Re: Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403811#M2737</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: tmsbn90&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; I've tried everything. I can't get it to work.&amp;nbsp;&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;My Alertdialog will not populate with the names of locations, from the Name field, from my layer, within a map service.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;What am I doing wrong SPECIFICALLY?&amp;nbsp;&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;FYI - I've referred to the query example.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Any help is appreciated.&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;Thanks,&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt;This is my new code:&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &lt;PRE class="lia-code-sample line-numbers language-none"&gt;

package com.dhec.MPOS;

import com.esri.android.map.MapView;
import com.esri.core.geometry.Envelope;
import com.esri.core.geometry.SpatialReference;
import com.esri.core.map.FeatureSet;
import com.esri.core.map.Graphic;
import com.esri.core.tasks.ags.query.Query;
import com.esri.core.tasks.ags.query.QueryTask;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

//MapScreen is a subclass of Activity.
public class MapScreen extends Activity {

 public MapView map;
 String targetServerURL = "&lt;SPAN style="color:&amp;quot;#0000FF&amp;quot;;"&gt;MAP SERVER HERE&lt;/SPAN&gt;";

 /*
&amp;nbsp; * Called when the Activity is first created. Remember the Activity and its
&amp;nbsp; * methods are created first. Then the MapScreen class is used.
&amp;nbsp; */
 public void onCreate(Bundle savedInstanceState) {
&amp;nbsp; super.onCreate(savedInstanceState);
&amp;nbsp; setContentView(R.layout.mapscreen);

&amp;nbsp; map = (MapView) findViewById(R.id.map);

 }

 public boolean onCreateOptionsMenu(Menu menu) {
&amp;nbsp; MenuInflater inflater = getMenuInflater();
&amp;nbsp; inflater.inflate(R.menu.actionbar_menu, menu);
&amp;nbsp; return true;
 }

 public boolean onOptionsItemSelected(MenuItem item) {
&amp;nbsp; switch (item.getItemId()) {

&amp;nbsp; case R.id.SearchTool:
&amp;nbsp;&amp;nbsp; String targetLayer = targetServerURL;
&amp;nbsp;&amp;nbsp; String[] queryParams = { targetLayer, "Name" };
&amp;nbsp;&amp;nbsp; AsyncQueryTask ayncQuery = new AsyncQueryTask();
&amp;nbsp;&amp;nbsp; ayncQuery.execute(queryParams);
&amp;nbsp; }
&amp;nbsp; return false;
 }

 private class AsyncQueryTask extends AsyncTask&amp;lt;String, Void, FeatureSet&amp;gt; {
&amp;nbsp; /**
&amp;nbsp;&amp;nbsp; * First member in parameter array is the query URL; second member is
&amp;nbsp;&amp;nbsp; * the where clause.
&amp;nbsp;&amp;nbsp; */
&amp;nbsp; protected FeatureSet doInBackground(String... queryParams) {
&amp;nbsp;&amp;nbsp; if (queryParams == null || queryParams.length &amp;lt;= 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;

&amp;nbsp;&amp;nbsp; String url = queryParams[0];
&amp;nbsp;&amp;nbsp; Query query = new Query();
&amp;nbsp;&amp;nbsp; String whereClause = queryParams[1];
&amp;nbsp;&amp;nbsp; query.setOutFields(queryParams);
&amp;nbsp;&amp;nbsp; SpatialReference sr = SpatialReference.create(4326);
&amp;nbsp;&amp;nbsp; query.setGeometry(new Envelope(-9246560.42264577, 3775709.72082467,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -8746857.60892366, 4180002.76740144));
&amp;nbsp;&amp;nbsp; query.setOutSpatialReference(sr);
&amp;nbsp;&amp;nbsp; query.setReturnGeometry(true);
&amp;nbsp;&amp;nbsp; query.setWhere(whereClause);
&amp;nbsp;&amp;nbsp; QueryTask qTask = new QueryTask(url);
&amp;nbsp;&amp;nbsp; FeatureSet fs = null;

&amp;nbsp;&amp;nbsp; try {
&amp;nbsp;&amp;nbsp;&amp;nbsp; fs = qTask.execute(query);
&amp;nbsp;&amp;nbsp; } catch (Exception e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp; return fs;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; return fs;

&amp;nbsp; }

&amp;nbsp; protected void onPostExecute(FeatureSet result) {
&amp;nbsp;&amp;nbsp; Object location1 = null;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; String message = "No result comes back";
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; Graphic[] grs = result.getGraphics();
&amp;nbsp;&amp;nbsp; if (result != null &amp;amp;&amp;amp; grs.length &amp;gt; 0){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt;= grs.length; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic g = grs&lt;I&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; location1 = g.getAttributeValue("Name");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MapScreen.this);
&amp;nbsp;&amp;nbsp; String[] location2 = { location1.toString() };
&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location:");
&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(marinas, new DialogInterface.OnClickListener() {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do something once clicked
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();
&amp;nbsp;&amp;nbsp; alertDialog.show();&amp;nbsp; 
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; else{
&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast toast = Toast.makeText(MapScreen.this, message,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.LENGTH_LONG);
&amp;nbsp;&amp;nbsp;&amp;nbsp; toast.show();
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
 
&amp;nbsp; }
 }
}

&lt;/I&gt;&lt;/PRE&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;This is my log cat:&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &lt;PRE class="lia-code-sample line-numbers language-none"&gt;

04-09 13:36:09.895: W/dalvikvm(15894): threadid=1: thread exiting with uncaught exception (group=0x40ab3210)
04-09 13:36:09.902: E/AndroidRuntime(15894): FATAL EXCEPTION: main
04-09 13:36:09.902: E/AndroidRuntime(15894): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.dhec.MPOS.MapScreen$AsyncQueryTask.onPostExecute(MapScreen.java:98)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.dhec.MPOS.MapScreen$AsyncQueryTask.onPostExecute(MapScreen.java:1)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask.finish(AsyncTask.java:602)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask.access$600(AsyncTask.java:156)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.os.Looper.loop(Looper.java:137)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at android.app.ActivityThread.main(ActivityThread.java:4722)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at java.lang.reflect.Method.invokeNative(Native Method)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at java.lang.reflect.Method.invoke(Method.java:511)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
04-09 13:36:09.902: E/AndroidRuntime(15894):&amp;nbsp; at dalvik.system.NativeStart.main(Native Method)

&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Check the for loop statement. Its supposed to be grs.length-1(you know.. because arrays go from 0 to length-1 &lt;span class="lia-unicode-emoji" title=":face_with_tongue:"&gt;😛&lt;/span&gt; )&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;for (int i = 0; i &amp;lt;= grs.length-1; i++) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Graphic g = grs&lt;I&gt;;&lt;/I&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; location1 = g.getAttributeValue("Name");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 18:24:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403811#M2737</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-11T18:24:07Z</dc:date>
    </item>
    <item>
      <title>Re: Populate AlertDialog from Webservice layer?</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403812#M2738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Follow up....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I figured it out with the help from a friend. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FYI - The declared names of objects are a little different in the code below when compared to the code I previously posted above, but you should be able to follow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Work flow - Starting from the onPostExecute method:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. If result is not null..."do something".&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Create a Graphics Array and put the FeatureSet results in the Array.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. Create/Initialize Alert Dialog Builder.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4. Set the Title for the Alert Dialog.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;5. Create a String Array and declare the length of the Array, which is the length of the Graphics Array in step two above.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;6. Create a loop that goes through each column of the graphic array.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;7. Declare a Graphic object that is equal to the graphic array loop.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;8. Create a String Array and put the graphics attribute values "Name" in the String Array as a string type.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;9. Set the Alert Dialog items as that of the String Array, in this case "arr" &amp;amp; create a new Dialog Interface.OnClickListener&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;10. Create the Alert Dialog.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;11. Show the Alert Dialog.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The code below solves my problem stated in opening post:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

package com.dhec.MPOS;

import com.esri.android.map.MapView;
import com.esri.core.map.FeatureSet;
import com.esri.core.map.Graphic;
import com.esri.core.tasks.ags.query.Query;
import com.esri.core.tasks.ags.query.QueryTask;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

//MapScreen is a subclass of Activity.
public class MapScreen extends Activity {

 public MapView map;

 /*
&amp;nbsp; * Called when the Activity is first created. Remember the Activity and its
&amp;nbsp; * methods are created first. Then the MapScreen class is used.
&amp;nbsp; */
 public void onCreate(Bundle savedInstanceState) {
&amp;nbsp; super.onCreate(savedInstanceState);
&amp;nbsp; setContentView(R.layout.mapscreen);

&amp;nbsp; map = (MapView) findViewById(R.id.map);

 }

 public boolean onCreateOptionsMenu(Menu menu) {
&amp;nbsp; MenuInflater inflater = getMenuInflater();
&amp;nbsp; inflater.inflate(R.menu.actionbar_menu, menu);
&amp;nbsp; return true;
 }

 public boolean onOptionsItemSelected(MenuItem item) {
&amp;nbsp; switch (item.getItemId()) {

&amp;nbsp; case R.id.SearchTool:

&amp;nbsp;&amp;nbsp; Query query = new Query();
&amp;nbsp;&amp;nbsp; query.setWhere("State = 'South Carolina'");
&amp;nbsp;&amp;nbsp; query.setReturnGeometry(true);
&amp;nbsp;&amp;nbsp; String[] outfields = new String[] { "Name" };
&amp;nbsp;&amp;nbsp; query.setOutFields(outfields);
&amp;nbsp;&amp;nbsp; query.setOutSpatialReference(map.getSpatialReference());

&amp;nbsp;&amp;nbsp; Query[] queryParams = { query };
&amp;nbsp;&amp;nbsp; AsyncQueryTask qt = new AsyncQueryTask();
&amp;nbsp;&amp;nbsp; qt.execute(queryParams);

&amp;nbsp; }
&amp;nbsp; return false;
 }

 private class AsyncQueryTask extends AsyncTask&amp;lt;Query, Void, FeatureSet&amp;gt; {

&amp;nbsp; protected FeatureSet doInBackground(Query... params) {

&amp;nbsp;&amp;nbsp; if (params.length &amp;gt; 0) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; Query query = params[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp; QueryTask queryTask = new QueryTask(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Put MAP SERVER URL HERE");
&amp;nbsp;&amp;nbsp;&amp;nbsp; try {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FeatureSet fs = queryTask.execute(query);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fs;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp; return null;
&amp;nbsp; }

&amp;nbsp; protected void onPostExecute(FeatureSet result) {

&amp;nbsp;&amp;nbsp; if (result != null) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic[] graphics = result.getGraphics();
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MapScreen.this);
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setTitle("Select a Location:");
&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] arr = new String[graphics.length];
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; graphics.length; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Graphic g = graphics&lt;I&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arr&lt;I&gt; = (String) g.getAttributeValue("Name");
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBuilder.setItems(arr, new DialogInterface.OnClickListener() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog,int which) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where you tell the application to do something once you click 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //the name within the alert dialog.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; AlertDialog alertDialog = dialogBuilder.create();
&amp;nbsp;&amp;nbsp;&amp;nbsp; alertDialog.show();
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
 }
}


&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thomas, thanks for giving me information.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this helps others.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 16:26:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-android-questions/populate-alertdialog-from-webservice-layer/m-p/403812#M2738</guid>
      <dc:creator>JohnAllen</dc:creator>
      <dc:date>2021-12-12T16:26:23Z</dc:date>
    </item>
  </channel>
</rss>

