Senin, 12 Januari 2015

First day

Today, I go to Seamolec at Pondok Cabe. There are we discuss about scholarship of double degree program between ITB and PuKyong. Mr. Gatot said, we must improve our english, especially about writting. So, we must make note about daily activity on the blog, maybe i call it 'diary'. I hope, this is path for learning english and improve that. And I hope, my english will good for two month later, insyaAllah. :-D

Rabu, 25 Juni 2014

AA Gym Tentang Sifat Allah Maha Dekat Dan Maha Mengkabulkan

Youtube :  http://www.youtube.com/watch?v=o8a95S6sa1M


Hadits Ke – 24:    Dari Abu Dzar Al Ghifari radhiallahuanhu dari Rasulullah shallallahu`alaihi wa sallam sebagaimana beliau riwayatkan dari Rabbnya Azza Wajalla bahwa Dia berfirman: Wahai hambaku, sesungguhya aku telah mengharamkan kezaliman atas diri-Ku dan Aku telah menetapkan haramnya (kezaliman itu) di antara kalian, maka janganlah kalian saling berlaku zalim. Wahai hamba-Ku semua kalian adalah sesat kecuali siapa yang Aku beri hidayah, maka mintalah hidayah kepada-Ku niscaya Aku akan memberikan kalian hidayah. Wahai hamba-Ku, kalian semuanya kelaparan kecuali siapa yang aku berikan kepadanya makanan, maka mintalah makan kepada-Ku niscaya Aku berikan kalian makanan. Wahai hamba-Ku, kalian semuanya telanjang kecuali siapa yang aku berikan kepadanya pakaian, maka mintalah pakaian kepada-Ku niscaya Aku berikan kalian pakaian. Wahai hamba-Ku kalian semuanya melakukan kesalahan pada malam dan siang hari dan Aku mengampuni dosa semuanya, maka mintalah ampun kepada-Ku niscaya akan Aku ampuni. Wahai hamba-Ku sesungguhnya tidak ada kemudharatan yang dapat kalian lakukan kepada-Ku sebagaimana tidak ada kemanfaatan yang kalian berikan kepada-Ku. Wahai hamba-Ku seandainya sejak orang pertama di antara kalian sampai orang terakhir, dari kalangan manusia dan jin semuanya berada dalam keadaan paling bertakwa di antara kamu, niscaya hal tersebut tidak menambah kerajaan-Ku sedikitpun. Wahai hamba-Ku seandainya sejak orang pertama di antara kalian sampai orang terakhir, dari golongan manusia dan jin diantara kalian, semuanya seperti orang yang paling durhaka di antara kalian, niscaya hal itu tidak mengurangi kerajaan-Ku sedikitpun juga. Wahai hamba-Ku, seandainya sejak orang pertama diantara kalian sampai orang terakhir semunya berdiri di sebuah bukit lalu kalian meminta kepada-Ku, lalu setiap orang yang meminta Aku penuhi, niscaya hal itu tidak mengurangi apa yang ada pada-Ku kecuali bagaikan sebuah jarum yang dicelupkan di tengah lautan. Wahai hamba-Ku, sesungguhnya semua perbuatan kalian akan diperhitungkan untuk kalian kemudian diberikan balasannya, siapa yang banyak mendapatkan kebaikaan maka hendaklah dia bersyukur kepada Allah dan siapa yang menemukan selain (kebaikan) itu janganlah ada yang dicela kecuali dirinya. (Riwayat Muslim)

http://azizdesign.wordpress.com/hadits-arbain-nawawi/

“Aku adalah sepertimana sangkaan hambaKu, dan Aku bersama dengannya ketika ia mengingati Aku. Jika ia ingat kepadaKu di dalam hatinya, Aku ingat kepadanya di dalam hatiKu. Dan jika ia ingat kepadaKu di khalayak ramai, nescaya Aku pun ingat kepadanya dalam khalayak ramai lebih baik. Dan jika ia mendekati kepadaKu sejengkal,Aku pun mendekatinya sehasta. Dan jika ia mendekatiKu sehasta, nescaya Aku mendekatinya sedepa. Dan jika ia datang kepadaKu berjalan, maka Aku datang kepadanya sambil belari.”

http://wadiqurra.blogspot.kr/2010/06/aku-sepertimana-sangkaan-hambaku.html 


Dari Abdullah bin ‘Amr, bahwasanya Rasulullah shallallahu ‘alaihi wa sallam bersabda, “Hati itu laksana wadah dan sebagian wadah ada yang lebih besar dari yang lainnya. Apabila kalian memohon kepada Allah  maka mohonlah kepada-Nya sedangkan kamu merasa yakin akan dikabulkan, karena sesungguhnya Allah tidak akan mengabulkan doa dari hati yang lalai.” (HR Ahmad)

http://remajaislam.com/69-agar-doa-kita-terkabul

Sabtu, 18 Januari 2014

I just wanna learn to make an API


If you want to make an application about chord guitar, you can try this. This is use JSON result.

Get List Artist By Index
http://finno-dev.netai.net/index/index.php?index=u&process=0&page=0
index : the first char from name artist
process : 0 -> to get list artist by index, and 1 -> count page for index
page : pagination for index


Count Page
http://finno-dev.netai.net/index/index.php?index=a&process=1
index : the first char from name artist
process : 0 -> to get list artist by index, and 1 -> count page for index

Get List Title By ID Artist
http://finno-dev.netai.net/artist/index.php?id=46&count=5&start=1
start and count : You can limit the amount of content that will be opened
id : id by artist

Get Chord By ID Title
http://finno-dev.netai.net/chord/index.php?id=1
id : id by title




Note :
Caused this use a free hosting, so you must remove :
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->

Rabu, 25 Desember 2013

Tutorial : Fragment on Android

My definition about fragment on Android is add another view in current view but have different activity.
 for example :



step 1 :
create new project, with :
Application Name : FragmentExample
Project Name : FragmentExample
Package Name : com.example.fragmentexample

Minimum required SDK : API 14: Android 4.0 (IceCream Sandwich)

step 2 :
Create class DetailsFragmentActivity.java

step 3 :

Create new page. (right click on folder res -> layout, select New -> Others. Select Android Activity then next, and give name DetailsActivity, then finish). You can design page to give difference each page.

step 4 :
In activity_main.xml, add fragment element.

step 5 :
Create new class to activity of fragment (DetailsFragmentAcitvity.java)

Code :
activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#55000000"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <fragment
        android:id="@+id/fragmentLayout"
        android:name="com.example.fragmentexample.DetailsFragmentActivity"
        android:layout_width="fill_parent"
        android:layout_height="300dp"
        android:layout_marginTop="50dp" />

</LinearLayout>
activity_details.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#55FF0000"
    tools:context=".DetailsActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>
DetailsActivity.java (code for activity_details.xml when this is the page or standalone)

 package com.example.fragmentexample;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class DetailsActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.details, menu);
        return true;
    }

}


DetailsFragmentActivity.java (code for activity_details.xml when this is the fragment)

package com.example.fragmentexample;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class DetailsFragmentActivity extends Fragment {
  
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.activity_details, container, false);
        return v;
    }
  
}



MainActivity.java (code for activity_main.xml)

package com.example.fragmentexample;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        DetailsFragmentActivity DetailAct = (DetailsFragmentActivity) getFragmentManager()
                .findFragmentById(R.id.fragmentLayout);
        if (DetailAct == null) {
            DetailAct = new DetailsFragmentActivity();
            getFragmentManager().beginTransaction()
                    .replace(R.id.fragmentLayout, DetailAct).commit();
        } else {

        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
Happy Code !!!

Selasa, 24 Desember 2013

Tutorial : How to parsing XML on Android (standard)

For example data :

Package Name : com.example.xmllesson

Note : you will not see this result on your UI, you can see this result if you debug this code on MainActivity.java (there are have sign to you debug)











data xml to parsing : (in MainActivity, you will find method Dummy, so you dont need to copy this)

<friends>
    <friend id="0001">
        <name>
            <first>first_1</first>
            <middle>middle_1</middle>
            <last>last_1</last>
        </name>
        <photo url="http://www.example.com/friend1.jpg"/>
        <address>Friend Address 1</address>
    </friend>
   
    <friend id="0002">
        <name>
            <first>first_2</first>
            <middle>middle_2</middle>
            <last>last_2</last>
        </name>
        <photo url="http://www.example.com/friend2.jpg"/>
        <address>Friend Address 2</address>
    </friend>
</friends>


XMLDOMParser.java

package com.example.xmllesson;

import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import android.util.Log;

public class XMLDOMParser {

    public Document getDocument(InputStream inputStream) {
        Document document = null;
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = factory.newDocumentBuilder();
            InputSource inputSource = new InputSource(inputStream);
            document = db.parse(inputSource);
        } catch (ParserConfigurationException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (SAXException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (IOException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        }
        return document;
    }

    public String getValue(Element item, String name) {
        NodeList nodes = item.getElementsByTagName(name);
        return this.getTextNodeValue(nodes.item(0));
    }

    public String getTextNodeValue(Node node) {
        Node child;
        if (node != null) {
            if (node.hasChildNodes()) {
                child = node.getFirstChild();
                while(child != null) {
                    if (child.getNodeType() == Node.TEXT_NODE) {
                        return child.getNodeValue();
                    }
                    child = child.getNextSibling();
                }
            }
        }
        return "";
    }
}


FriendModel.java

package com.example.xmllesson;

public class FriendModel {
   
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getFullname() {
        String fullname = "";
        if(!getFirst().equals(null))
            fullname = getFirst();
        if(!getMiddle().equals(null))
            fullname = fullname + " " + getMiddle();
        if(!getLast().equals(null))
            fullname = fullname + " " + getLast();
        return fullname;
    }

    public String getFirst() {
        return first;
    }
    public void setFirst(String first) {
        this.first = first;
    }
    public String getMiddle() {
        return middle;
    }
    public void setMiddle(String middle) {
        this.middle = middle;
    }
    public String getLast() {
        return last;
    }
    public void setLast(String last) {
        this.last = last;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    private String id;
    private String first;
    private String middle;
    private String last;
    private String photo;
    private String address;


ParserXML.java

package com.example.xmllesson;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;


public class ParserXML {
    private static final String NODE_FRIEND = "friend";
    private static final String ATTR_ID = "id";
    private static final String NODE_NAME = "name";
    private static final String NODE_FIRST = "first";
    private static final String NODE_MIDDLE = "middle";
    private static final String NODE_LAST = "last";
    private static final String NODE_PHOTO = "photo";
    private static final String ATTR_URL = "url";
    private static final String NODE_ADDRESS = "address";
    private static XMLDOMParser parser;
   
    public static ArrayList<FriendModel> Desrialize(String xmlString)
    {
        ArrayList<FriendModel> listFriend = new ArrayList<FriendModel>();
        parser = new XMLDOMParser();
        InputStream stream = new ByteArrayInputStream(xmlString.getBytes());
        Document doc = parser.getDocument(stream);
        NodeList nodeList = doc.getElementsByTagName(NODE_FRIEND);
        for (int i = 0; i < nodeList.getLength(); i++) {
            Element e = (Element) nodeList.item(i);
            FriendModel friend = new FriendModel();
           
            //<friend id="0001"> we will get : id = 0001
            friend.setId(e.getAttribute(ATTR_ID));
           
            //<first>first_1</first> we will get : first_1
            friend.setFirst(getTextNodeValueInNode(e, NODE_NAME, NODE_FIRST));
           
            //<middle>middle_1</middle> we will get : middle_1
            friend.setMiddle(getTextNodeValueInNode(e, NODE_NAME, NODE_MIDDLE));
           
            //<last>last_1</last> we will get : last_1
            friend.setLast(getTextNodeValueInNode(e, NODE_NAME, NODE_LAST));
           
            //<photo url="http://www.example.com/friend1.jpg"/> we will get : http://www.example.com/friend1.jpg
            friend.setPhoto(getAttributeInNodeItem(e, NODE_PHOTO, ATTR_URL));
           
            //<address>Friend Address 1</address> we will get : Friend Address 1
            friend.setAddress(parser.getValue(e, NODE_ADDRESS));
           
           
            listFriend.add(friend);
        }
        return listFriend;
    }

    private static String getTextNodeValueInNode(Element item, String nodeName, String subNodeName)
    {
        NodeList childs = item.getElementsByTagName(nodeName);
        Element element = (Element)childs.item(0);
        return parser.getValue(element, subNodeName);
    }
   
    private static String getAttributeInNodeItem(Element item, String name, String attrName)
    {
        NodeList childs = item.getElementsByTagName(name);
        return ((Element) childs.item(0))
                .getAttribute(attrName);
    }
}


MainActivity.java

package com.example.xmllesson;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

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

        //debug here
        ArrayList<FriendModel> result = ParserXML.Desrialize(Dummy());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    private String Dummy() {
        return "<friends>" + "    <friend id=\"0001\">" + "        <name>"
                + "            <first>first_1</first>" + "            <middle>middle_1</middle>"
                + "            <last>last_1</last>" + "        </name>"
                + "        <photo url=\"http://www.example.com/friend1.jpg\"/>"
                + "        <address>Friend Address 1</address>" + "    </friend>" + "    "
                + "    <friend id=\"0002\">" + "        <name>"
                + "            <first>first_2</first>" + "            <middle>middle_2</middle>"
                + "            <last>last_2</last>" + "        </name>"
                + "        <photo url=\"http://www.example.com/friend2.jpg\"/>"
                + "        <address>Friend Address 2</address>" + "    </friend>"
                + "</friends>";
    }
}




So, keep learning anything and keep spirit ^_^

Minggu, 22 Desember 2013

Tutorial - Make Androidhive Apps

You can download GSON Library here.

Example :

Source JSON from http://api.androidhive.info/contacts/

Application Name : Androidhive
Project Name : Androidhive
Package Name : com.lesson.androidhive

There are have 3 model data :

For DownloadString.java, you can see here.

PhoneModel.java

package com.lesson.androidhive.models;
public class PhoneModel {
    public String mobile;
    public String home;
    public String office;
}


ContactModel.java

package com.lesson.androidhive.models;
public class ContactModel {
    public String id;
    public String name;
    public String email;
    public String address;
    public String gender;
    public PhoneModel phone;
}


ResponseModel.java

package com.lesson.androidhive.models;
public class ResponseModel {
     public List<ContactModel> contacts;
}


ValueString.java

package com.lesson.androidhive.controls;

public class ValueString {
    public static final String MAIN_URL = "http://api.androidhive.info/contacts/";
}


item_person.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:background="#33FF0000"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="@string/example_id"
        android:textIsSelectable="false"
        android:textSize="12sp" />
   
    <TextView
        android:id="@+id/tv_name"
        android:layout_marginLeft="20dp"
        android:layout_below="@+id/tv_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="@string/example_id"
        android:textIsSelectable="false"
        android:textSize="12sp" />
   
    <TextView
        android:id="@+id/tv_email"
        android:layout_marginLeft="20dp"
        android:layout_below="@+id/tv_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="@string/example_id"
        android:textIsSelectable="false"
        android:textSize="12sp" />

</RelativeLayout>



activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/postListView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>



ContactAdapter.java 

package com.lesson.androidhive.adapters;

import java.util.List;
import com.lesson.androidhive.models.ContactModel;
import com.lesson.androidhive.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ContactAdapter extends ArrayAdapter<ContactModel> {
    private Context _context;
    private int _resource;
    private List<ContactModel> _contacts;
    public ContactAdapter(Context context, int resource,
            List<ContactModel> contacts) {
        super(context, resource, contacts);
        _context = context;
        _resource = resource;
        _contacts = contacts;
    }
   
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        ContactHolder holder = null;

        if (row == null) {
            LayoutInflater inflater = LayoutInflater.from(_context);

            row = inflater.inflate(_resource, parent, false);
            holder = new ContactHolder(row);
            row.setTag(holder);
        } else {
            holder = (ContactHolder) row.getTag();
        }

        holder.populateFrom(_contacts.get(position));

        return (row);
    }

   
    public static class ContactHolder {
        private TextView _tvID;
        private TextView _tvName;
        private TextView _tvEmail;
       
        ContactHolder(View row)
        {
            _tvID = (TextView)row.findViewById(R.id.tv_id);
            _tvName = (TextView)row.findViewById(R.id.tv_name);
            _tvEmail = (TextView)row.findViewById(R.id.tv_email);
        }
       
        void populateFrom(ContactModel contact)
        {
            _tvID.setText(contact.id);
            _tvName.setText(contact.name);
            _tvEmail.setText(contact.email);
        }
    }
}


MainActivity.java

package com.lesson.androidhive;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.lesson.androidhive.adapters.ContactAdapter;
import com.lesson.androidhive.controls.ValueString;
import com.lesson.androidhive.models.ResponseModel;
import com.lesson.androidhive.util.DownloadString;
import com.lesson.androidhive.util.DownloadString.DownloadProperties;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;

public class MainActivity extends Activity {

    private ContactAdapter _contactAdapter;
    private ListView _lvContact;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
        _lvContact = (ListView)findViewById(R.id.postListView);
      
        DownloadString downloadString = new DownloadString();
        downloadString.setListener(new DownloadProperties() {
         
            @Override
            public void OnStart() {
                // TODO Auto-generated method stub
            }
         
            @Override
            public void OnProgress(int progress) {
                // TODO Auto-generated method stub
            }
         
            @Override
            public void OnCompleted(String result) {
                OnCompletedDownload(result);
            }
        });
        downloadString.execute(ValueString.MAIN_URL);

    }
  
    private void OnCompletedDownload(String result)
    {
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setDateFormat("M/d/yy hh:mm a");
        Gson gson = gsonBuilder.create();
        ResponseModel contacts = gson.fromJson(result, ResponseModel.class);
        _contactAdapter = new ContactAdapter(getBaseContext(), R.layout.item_person, contacts.contacts);
        _lvContact.setAdapter(_contactAdapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}


AndroidManifest.java

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lesson.androidhive"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.lesson.androidhive.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>





Using GSON to Deserialize JSON - Android

You can download GSON Library here.

Example :

Source JSON from http://api.androidhive.info/contacts/

There are have 3 model data :

PhoneModel.java

public class PhoneModel {
    public String mobile;
    public String home;
    public String office;
}


ContactModel.java

public class ContactModel {
    public String id;
    public String name;
    public String email;
    public String address;
    public String gender;
    public PhoneModel phone;
}


ResponseModel.java

public class ResponseModel {
     public List<ContactModel> contacts;
}


MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        DownloadString downloadString = new DownloadString();
        downloadString.setListener(new DownloadProperties() {
           
            @Override
            public void OnStart() {
                // TODO Auto-generated method stub
            }
           
            @Override
            public void OnProgress(int progress) {
                // TODO Auto-generated method stub
            }
           
            @Override
            public void OnCompleted(String result) {
                GsonBuilder gsonBuilder = new GsonBuilder();
                gsonBuilder.setDateFormat("M/d/yy hh:mm a");
                Gson gson = gsonBuilder.create();
                ResponseModel contacts = gson.fromJson(result, ResponseModel.class);
                //contacts is result JSON
            }
        });
        downloadString.execute("http://api.androidhive.info/contacts/");
       
    }