checkpoint: Now downloads json async and populates spinner.
authorkenstir <kenstir@gmail.com>
Sat, 7 Nov 2015 02:03:35 +0000 (21:03 -0500)
committerkenstir <kenstir@gmail.com>
Sat, 7 Nov 2015 02:03:35 +0000 (21:03 -0500)
Open-ILS/src/Android/core/res/layout/activity_choose_library.xml
Open-ILS/src/Android/core/src/org/evergreen_ils/views/ChooseConsortiumActivity.java

index 8eeea10..57e0649 100644 (file)
@@ -18,7 +18,6 @@
         android:id="@+id/choose_library_spinner"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:background="#000000"
         android:layout_marginTop="5dip"
         android:layout_marginBottom="5dip"
         />
index 29e3d5b..864e407 100644 (file)
@@ -1,24 +1,25 @@
 package org.evergreen_ils.views;
 
+import android.content.Context;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.ActionBarActivity;
 import android.util.Log;
 import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
 import android.widget.Button;
 import android.widget.Spinner;
 import org.evergreen_ils.R;
 import org.evergreen_ils.accountAccess.AccountAccess;
 import org.evergreen_ils.globals.Utils;
 import org.evergreen_ils.searchCatalog.Consortium;
+import org.evergreen_ils.utils.ui.CompatSpinnerAdapter;
 import org.opensrf.util.JSONException;
 import org.opensrf.util.JSONReader;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 
 /**
  * Created by kenstir on 2015-11-05.
@@ -27,14 +28,16 @@ public class ChooseConsortiumActivity extends ActionBarActivity {
 
     private final String TAG = ChooseConsortiumActivity.class.getSimpleName();
     public static String consortiumsJSONUrl = "http://evergreen-ils.org/testing/libraries.json";
-    Spinner spinner;
+    Context context;
+    Spinner consortiumSpinner;
     Button button;
-    ArrayList<Consortium> consortiums = new ArrayList<Consortium>();
+    String consortium_url = null;
+    List<Consortium> consortiums = new ArrayList<Consortium>();
 
-    private class FetchConsortiumsTask extends AsyncTask<String, void, String> {
-        protected void doInBackground(String... params) {
+    private class FetchConsortiumsTask extends AsyncTask<String, Integer, String> {
+        protected String doInBackground(String... params) {
             String url = params[0];
-            String result;
+            String result = null;
             try {
                 Log.d(TAG, "fetching "+url);
                 result = Utils.getNetPageContent(url);
@@ -46,11 +49,20 @@ public class ChooseConsortiumActivity extends ActionBarActivity {
 
         protected void onPostExecute(String result) {
             Log.d(TAG, "results available: "+result);
+            consortiums = parseEvergreenConsortiums(result);
+            ArrayList<String> l = new ArrayList<String>(consortiums.size());
+            for (Consortium consortium : consortiums) {
+                l.add(consortium.name);
+            }
+            //ArrayAdapter<String> adapter = CompatSpinnerAdapter.CreateCompatSpinnerAdapter(context, l);
+            ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, l);
+            consortiumSpinner.setAdapter(adapter);
         }
     }
 
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        context = getApplicationContext();
 
         // do not start SplashActivity here...it started us
 
@@ -59,42 +71,32 @@ public class ChooseConsortiumActivity extends ActionBarActivity {
         ActionBar actionBar = getSupportActionBar();
         actionBar.setSubtitle(AccountAccess.userName);
 
-        spinner = (Spinner) findViewById(R.id.choose_library_spinner);
+        consortiumSpinner = (Spinner) findViewById(R.id.choose_library_spinner);
         button = (Button) findViewById(R.id.choose_library_button);
 
         //init asynctask here
-        FetchConsortiumsTask task = new
+        FetchConsortiumsTask task = new FetchConsortiumsTask();
+        task.execute(consortiumsJSONUrl);
     }
 
     public void onButtonClick(View v) {
         int id = v.getId();
     }
 
-    public void getEvergreenConsortiums() {
-
-        String json = null;
-
-        try {
-            Log.d(TAG, "fetching " + consortiumsJSONUrl);
-            json = Utils.getNetPageContent(consortiumsJSONUrl);
-        } catch (Exception e) {
-            Log.w(TAG, "failed fetching consortiums", e);
-        }
-
+    public List<Consortium> parseEvergreenConsortiums(String json) {
+        List<Consortium> consortiums = new ArrayList<Consortium>();
         if (json != null) {
-            List l;
+            List<Map<String,?>> l;
             try {
-                l = new JSONReader(json).readArray();
+                l = (List<Map<String,?>>) new JSONReader(json).readArray();
             } catch (JSONException e) {
                 Log.d(TAG, "failed parsing consortiums array", e);
                 return consortiums;
             }
-
-            // Convert json list into array
-            for (int i=0; i<l.size(); ++i) {
-                List item = (List)l.get(i);
+            for (Map<String, ?> map : l) {
                 Consortium c = new Consortium();
-                c.name = "xyzzy";
+                c.name = (String) map.get("library_name");
+                c.library_url = (String) map.get("url");
                 consortiums.add(c);
             }