Published using Google Docs
Introduction To Volley
Updated automatically every 5 minutes

Introduction To Volley

Using Android Studio 1.4

1) Create New Project

Application Name: MyFirstVolleyProject1

Select API 14:Android 4.0 (IceCreamSandwich)

Follow the wizard to create New Blank Activity.

2) Import Volley Library Into Project

2.1) Download Volley Project

Download volley20151105.zip and unzip it.

2.2) Import using Android Studio

2.3) Add Dependencies

Build.Gradle(Module:App)

apply plugin: 'com.android.application'

android {

   compileSdkVersion 23

   buildToolsVersion "23.0.1"

   defaultConfig {

       applicationId "com.notarazi.myfirstvolleyproject1"

       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:appcompat-v7:23.1.0'

   compile 'com.android.support:design:23.1.0'

   compile project(':volley')

}

Sync Project with Gradle Files

2.4) Add Permission

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

   package="com.notarazi.myfirstvolleyproject1" >

   <uses-permission android:name="android.permission.INTERNET"/>

   <application

       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.

3) Edit Layout

3.1) res/layout/content_main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"

   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"

   android:paddingRight="@dimen/activity_horizontal_margin"

   android:paddingTop="@dimen/activity_vertical_margin"

   android:paddingBottom="@dimen/activity_vertical_margin"

   app:layout_behavior="@string/appbar_scrolling_view_behavior"

   tools:showIn="@layout/activity_main" tools:context=".MainActivity">

   <LinearLayout

       xmlns:android="http://schemas.android.com/apk/res/android"

       android:layout_width="match_parent"

       android:layout_height="match_parent"

       android:orientation="vertical" >

       <TextView

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:text="Blog Posts"

           android:textStyle="bold"

           android:id="@+id/heading"

           android:layout_alignParentTop="true"

           android:layout_centerHorizontal="true"

           android:textSize="38dp"

           android:textColor="#230cff" />

       <TextView

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:textAppearance="?android:attr/textAppearanceLarge"

           android:text="Small Text"

           android:textSize="12dp"

           android:textStyle="bold"

           android:id="@+id/jsonData"

           android:layout_marginTop="42dp"

           android:layout_below="@+id/heading"

           android:layout_alignParentLeft="true"

           android:layout_alignParentStart="true"

           android:textColor="#000000" />

   </LinearLayout>

</RelativeLayout>

4) Edit MainActivity

package com.notarazi.myfirstvolleyproject1;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.util.Log;

import android.view.View;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.TextView;

import com.android.volley.Request;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.JsonObjectRequest;

import com.android.volley.toolbox.Volley;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

   TextView output ;

   String loginURL="https://public-api.wordpress.com/rest/v1/sites/www.hackpundit.com/posts?number=5&page=1&type=post&fields=id,title,URL";

   String data = "";

   RequestQueue requestQueue;

   @Override

   protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

       if(savedInstanceState!=null){

           Log.d("STATE", savedInstanceState.toString());

       }

       Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

       setSupportActionBar(toolbar);

       sendRequest();

       FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

       fab.setOnClickListener(new View.OnClickListener() {

           @Override

           public void onClick(View view) {

               Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

                       .setAction("Action", null).show();

           }

       });

   }

   private void sendRequest() {

       requestQueue = Volley.newRequestQueue(this);

       output = (TextView) findViewById(R.id.jsonData);

       JsonObjectRequest jor = new JsonObjectRequest(Request.Method.GET, loginURL, null,

               new Response.Listener<JSONObject>() {

                   @Override

                   public void onResponse(JSONObject response) {

                       try{

                           JSONArray ja = response.getJSONArray("posts");

                           for(int i=0; i < ja.length(); i++){

                               JSONObject jsonObject = ja.getJSONObject(i);

                               // int id = Integer.parseInt(jsonObject.optString("id").toString());

                               String title = jsonObject.getString("title");

                               String url = jsonObject.getString("URL");

                               data += "Blog Number "+(i+1)+" \n Blog Name= "+title  +" \n URL= "+ url +" \n\n\n\n ";

                           }

                           output.setText(data);

                       }catch(JSONException e){e.printStackTrace();}

                   }

               },

               new Response.ErrorListener() {

                   @Override

                   public void onErrorResponse(VolleyError error) {

                       Log.e("Volley","Error");

                   }

               }

       );

       requestQueue.add(jor);

   }

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

       // Inflate the menu; this adds items to the action bar if it is present.

       getMenuInflater().inflate(R.menu.menu_main, menu);

       return true;

   }

   @Override

   public boolean onOptionsItemSelected(MenuItem item) {

       // Handle action bar item clicks here. The action bar will

       // automatically handle clicks on the Home/Up button, so long

       // as you specify a parent activity in AndroidManifest.xml.

       int id = item.getItemId();

       //noinspection SimplifiableIfStatement

       if (id == R.id.action_settings) {

           return true;

       }

       return super.onOptionsItemSelected(item);

   }

}

   

DOWNLOAD

MyFirstVolleyProject1.zip

REFERENCES

http://www.hackpundit.com/android-turorial-json-parse-volley/