android json parser

Android JSON Parser

Android JSON Parser

The meaning of JSON is JavaScript Object Notation. Mainly JSON use for data-interchange. It is easy for humans to read and write. JSON data use as bridge between android and remote database. Here we are going to learn JSON parse and store data to collection framework and fetch data to ListView. We need to call network to fetch data from remote server. Here we call network under a background thread(JsonTask.java, a class that inherit AsyncTask class) from JsonParseActivity.java activity class.

So, need to take permission of network and check network connection of device.

Permission:-

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

 

Source Code:-


 

JsonParseActivity.java


 

package com.androidfromhome.jsonparse;

import com.androidfromhome.json.util.JsonTask;
import com.androidfromhome.json.webservice.CheckIneternetConnection;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class JsonParseActivity extends Activity implements OnClickListener {

    private Button btn_json;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_json_parse);
        
        
        btn_json=(Button)findViewById(R.id.btn_json);
        btn_json.setOnClickListener(this);
        
        
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btn_json:
            if (CheckIneternetConnection.checkConnection(JsonParseActivity.this)) {
                new JsonTask(JsonParseActivity.this, JsonParseActivity.this).execute("");
        
            }
            else{
                
                Toast.makeText(JsonParseActivity.this, "Internet connection error", Toast.LENGTH_LONG).show();
            }
            break;

        default:
            break;
        }
        
    }

    
}
 


 

 

ListViewActivity.java


 

package com.androidfromhome.jsonparse;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import com.androidfromhome.json.util.ListCollection;
import com.androidfromhome.json.util.adapter.AndroidListAdapter;

public class ListViewActivity extends Activity {

    private ListView lv_android;
    private AndroidListAdapter list_adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);
        
        
    
        getWidget();
    }

    
    
    public void getWidget(){
        
        lv_android = (ListView) findViewById(R.id.lv_android);
        list_adapter=new AndroidListAdapter(ListViewActivity.this,R.layout.list_item, ListCollection.listCollectionArr);
        lv_android.setAdapter(list_adapter);
        
    }
    
}


 

 

PostingJson .java


 

package com.androidfromhome.json.webservice;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;

public class PostingJson {
    
    public static String postJson(ArrayList<NameValuePair> entity,String url) {

    String RESPONSE = "";
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        
        try{
        httppost.setHeader("Content-Type","application/x-www-form-urlencoded");
       
        httppost.setEntity(new UrlEncodedFormEntity(entity, "UTF-8"));
        HttpResponse response = httpClient.execute(httppost);
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));    
        RESPONSE = reader.readLine();
            
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return RESPONSE;

    }
   
}

 

 


 

JsonParser.java


 

package com.androidfromhome.json.webservice;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.androidfromhome.json.util.ListCollection;

public class JsonParser {
   
public static void getJsonData(String data) throws JSONException{
    ListCollection.listCollectionArr.clear();   
    
    JSONArray main_arr=new JSONArray(data);
    
    if (main_arr!=null) {
    
        int len=main_arr.length();
        for (int i = 0; i <len; i++) {

            JSONObject json_obj=main_arr.getJSONObject(i);
        if (json_obj!=null) {
            
            String id="";
            String username="";
            String address="";
            String phoneno="";
                
    
            if (json_obj.has("id")) {
                id=json_obj.getString("id");    
            }
    
            
            if (json_obj.has("username")) {
                username=json_obj.getString("username");    
            }
            
            if (json_obj.has("address")) {
                address=json_obj.getString("address");    
            }
            
            if (json_obj.has("phoneno")) {
                phoneno=json_obj.getString("phoneno");    
            }
            
                     ListCollection.listCollectionArr.add(new ListCollection( id, username, address, phoneno));    
        }
                
            
        }
        
        
    }}

}

 


 

 

CheckIneternetConnection.java


 

package com.androidfromhome.json.webservice;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;

public class CheckIneternetConnection {
    

    
    @SuppressWarnings("deprecation")
    public static boolean checkConnection(Context context)
    {
        
        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        TelephonyManager telManager =  (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        
        NetworkInfo info = connManager.getActiveNetworkInfo();
        if (info == null ||!connManager.getBackgroundDataSetting())
        {
            return false;
        }
        int netType = info.getType();
        int netSubtype = info.getSubtype();
    
        if (netType == ConnectivityManager.TYPE_WIFI || netType == ConnectivityManager.TYPE_MOBILE)
        {
            return info.isConnected();
        } else if (netType == ConnectivityManager.TYPE_MOBILE && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS && !telManager.isNetworkRoaming())
        {
            return info.isConnected();
        } else
        {
            return false;
        }
    }
    
}


 

 

 

AndroidListAdapter.java


 

package com.androidfromhome.json.util.adapter;

import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.androidfromhome.json.util.ListCollection;
import com.androidfromhome.jsonparse.R;

public class AndroidListAdapter extends ArrayAdapter<ListCollection>{
    
    private final Context context;
    private final ArrayList<ListCollection> values;
    private ViewHolder viewHolder;
    private final int resourceId;
    
    public AndroidListAdapter(Context context, int resourceId,ArrayList<ListCollection> values) {
        super(context, resourceId, values);
        // TODO Auto-generated constructor stub
        
        this.context = context;
        this.values = values;
        this.resourceId = resourceId;
        
        
    }
    
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(resourceId, parent, false);
            
                
            viewHolder = new ViewHolder();
            viewHolder.tv_user = (TextView) convertView.findViewById(R.id.tv_user);
            viewHolder.tv_address = (TextView) convertView.findViewById(R.id.tv_address);
            viewHolder.tv_phone = (TextView) convertView.findViewById(R.id.tv_phone);
            
            
                convertView.setTag(viewHolder);
            
            
        }else
        {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        ListCollection list_obj=values.get(position);
        viewHolder.tv_user.setText(list_obj.username);
        viewHolder.tv_address.setText(list_obj.address);
        viewHolder.tv_phone.setText(list_obj.phoneno);
        
    
            
        return convertView;
    }
        public class ViewHolder {

         TextView tv_user;
         TextView tv_address;
         TextView tv_phone;

    }

}

 


 

ListCollection.java


 

package com.androidfromhome.json.util;

import java.util.ArrayList;

public class ListCollection {

    public static ArrayList<ListCollection> listCollectionArr=null;

    public    String id="";
    public    String username="";
    public    String address="";
    public    String phoneno="";
        
    
    public ListCollection(String id,String username,String address,String phoneno){
        this.id=id;
        this.username=username;
        this.address=address;
        this.phoneno=phoneno;
        
    }
    
}

 


 

 

JsonTask.java


 

package com.androidfromhome.json.util;

import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import com.androidfromhome.json.webservice.JsonParser;
import com.androidfromhome.json.webservice.PostingJson;
import com.androidfromhome.jsonparse.ListViewActivity;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;

public class JsonTask extends AsyncTask<String, Void, String> {
    
    String response="";
    Context ctx;
    Activity act;
    private ProgressDialog progDailog;
    
    public JsonTask(Context ctx,Activity act){
        ListCollection.listCollectionArr=new ArrayList<ListCollection>();
        this.act=act;
        this.ctx=ctx;
        progDailog=new ProgressDialog(ctx);    
        
    }
    protected void onPreExecute() {
        progDailog.setCancelable(false);
        progDailog.setMessage("Please Wait...");
        progDailog.show();    

    }

    @Override
    protected String doInBackground(String... arg0) {
        
        try {
            
                    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair("user_details_woimg","dfdf"));
                     String url="http://androidfromhome.com/json/functions.php?";
                    
                     response=PostingJson.postJson(nameValuePairs,url);
                    
            
            
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        
        
        if (response!=null) {
            if (!response.equalsIgnoreCase("")&&!response.equalsIgnoreCase("null")) {
            try {
                JsonParser.getJsonData(response);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
                
            }
            
        }
        return response;
        }
    

@Override
protected void onPostExecute(String result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    progDailog.dismiss();
        
        ctx.startActivity(new Intent(ctx,ListViewActivity.class));
         
}

}


 

 

Related Post:-

Android custom calendar

Font Style For Android

Sqlite database example in android

Android CSV Reader

Leave a Reply

Your email address will not be published. Required fields are marked *

Get Widget