Thursday, August 20, 2015

Introduction To Volley


.
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.GETloginURL,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

REFERENCES



.

No comments:

Post a Comment