Volley JsonArray ListActivity
Using Android Studio 1.4
Application Name: MyVolleyJsonArray1
Select API 14:Android 4.0 (IceCreamSandwich)
Follow the wizard to create New Empty Activity.
Select “Generate Layout File”
Download volley20151105.zip and unzip it.
Build.Gradle(Module:App)
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId "com.notarazi.myvolleyjsonarray1" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:design:23.1.0' compile project(':volley') } |
Sync Project with Gradle Files
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.notarazi.myvolleyjsonarray1" > <uses-permission android:name="android.permission.INTERNET"/> <application android:name="com.notarazi.myvolleyjsonarray1.MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
If you missed this step, your debug message will tell you about this.
package com.notarazi.myvolleyjsonarray1; import android.app.Application; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.toolbox.Volley; public class MyApplication extends Application { private RequestQueue mRequestQueue; private static MyApplication mInstance; @Override public void onCreate() { super.onCreate(); mInstance = this; } public static synchronized MyApplication getInstance() { return mInstance; } public RequestQueue getReqQueue() { if (mRequestQueue == null) { mRequestQueue = Volley.newRequestQueue(getApplicationContext()); } return mRequestQueue; } public <T> void addToReqQueue(Request<T> req, String tag) { getReqQueue().add(req); } public <T> void addToReqQueue(Request<T> req) { getReqQueue().add(req); } public void cancelPendingReq(Object tag) { if (mRequestQueue != null) { mRequestQueue.cancelAll(tag); } } } |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" > </TextView> </LinearLayout> |
package com.notarazi.myvolleyjsonarray1; import android.app.ListActivity; import android.app.ProgressDialog; import android.os.Bundle; import android.widget.ArrayAdapter; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonArrayRequest; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; public class MainActivity extends ListActivity { String url = "http://restcountries.eu/rest/v1"; ProgressDialog PD; ArrayList<String> countries; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); countries = new ArrayList<String>(); PD = new ProgressDialog(this); PD.setMessage("Loading....."); PD.setCancelable(false); adapter = new ArrayAdapter(this, R.layout.items, R.id.tv, countries); setListAdapter(adapter); MakeJsonArrayReq(); } private void MakeJsonArrayReq() { PD.show(); JsonArrayRequest jreq = new JsonArrayRequest(url, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { for (int i = 0; i < response.length(); i++) { try { JSONObject jo = response.getJSONObject(i); String name = jo.getString("name"); countries.add(name); } catch (JSONException e) { e.printStackTrace(); } } PD.dismiss(); adapter.notifyDataSetChanged(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); MyApplication.getInstance().addToReqQueue(jreq, "jreq"); } } |
OUTCOME.
*
http://www.tutorialsbuzz.com/2014/11/android-volley-jsonarray-parsing.html