Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.tw.vp;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.ListFragment;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.LinearLayout;
- import android.widget.ListAdapter;
- import android.widget.ListView;
- import android.widget.SimpleAdapter;
- import android.widget.TextView;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.ArrayList;
- import java.util.HashMap;
- /**
- * A simple {@link Fragment} subclass.
- */
- public class VFragment extends ListFragment {
- private ProgressDialog pDialog;
- // URL to get contacts JSON
- private static String url = "http://api.androidhive.info/contacts/";
- // JSON Node names
- private static final String TAG_CONTACTS = "contacts";
- private static final String TAG_ID = "id";
- private static final String TAG_NAME = "name";
- private static final String TAG_EMAIL = "email";
- private static final String TAG_ADDRESS = "address";
- private static final String TAG_GENDER = "gender";
- private static final String TAG_PHONE = "phone";
- private static final String TAG_PHONE_MOBILE = "mobile";
- private static final String TAG_PHONE_HOME = "home";
- private static final String TAG_PHONE_OFFICE = "office";
- // contacts JSONArray
- JSONArray contacts = null;
- // Hashmap for ListView
- ArrayList<HashMap<String, String>> contactList;
- // public VFragment() {
- // Required empty public constructor
- //}
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // Inflate the layout for this fragment
- View v= inflater.inflate(R.layout.fragment_v, container, false);
- ListView lv =(ListView)v.findViewById(android.R.id.list);
- contactList = new ArrayList<HashMap<String, String>>();
- // Listview on item click listener
- lv.setOnItemClickListener( new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- Log.d("Aufruf", "onItemClick");
- // getting values from selected ListItem
- String name = ((TextView) view.findViewById(R.id.name))
- .getText().toString();
- String cost = ((TextView) view.findViewById(R.id.email))
- .getText().toString();
- String description = ((TextView) view.findViewById(R.id.mobile))
- .getText().toString();
- // Starting single contact activity
- Intent in = new Intent(getActivity(), DetailActivity.class);
- in.putExtra(TAG_NAME, name);
- in.putExtra(TAG_EMAIL, cost);
- in.putExtra(TAG_PHONE_MOBILE, description);
- startActivity(in);
- }
- });
- // Calling async task to get json
- new GetContacts().execute();
- return v;
- }
- /**
- * Async task class to get json by making HTTP call
- * */
- private class GetContacts extends AsyncTask<Void, Void, Void> {
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- // Showing progress dialog
- pDialog = new ProgressDialog(getActivity());
- pDialog.setMessage("Please wait...");
- pDialog.setCancelable(false);
- pDialog.show();
- }
- @Override
- protected Void doInBackground(Void... arg0) {
- // Creating service handler class instance
- ServiceHandler sh = new ServiceHandler();
- // Making a request to url and getting response
- String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
- Log.d("Response: ", "> " + jsonStr);
- if (jsonStr != null) {
- try {
- JSONObject jsonObj = new JSONObject(jsonStr);
- // Getting JSON Array node
- contacts = jsonObj.getJSONArray(TAG_CONTACTS);
- // looping through All Contacts
- for (int i = 0; i < contacts.length(); i++) {
- JSONObject c = contacts.getJSONObject(i);
- String id = c.getString(TAG_ID);
- String name = c.getString(TAG_NAME);
- String email = c.getString(TAG_EMAIL);
- String address = c.getString(TAG_ADDRESS);
- String gender = c.getString(TAG_GENDER);
- // Phone node is JSON Object
- JSONObject phone = c.getJSONObject(TAG_PHONE);
- String mobile = phone.getString(TAG_PHONE_MOBILE);
- String home = phone.getString(TAG_PHONE_HOME);
- String office = phone.getString(TAG_PHONE_OFFICE);
- // tmp hashmap for single contact
- HashMap<String, String> contact = new HashMap<String, String>();
- // adding each child node to HashMap key => value
- contact.put(TAG_ID, id);
- contact.put(TAG_NAME, name);
- contact.put(TAG_EMAIL, email);
- contact.put(TAG_PHONE_MOBILE, mobile);
- // adding contact to contact list
- contactList.add(contact);
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- } else {
- Log.e("ServiceHandler", "Couldn't get any data from the url");
- }
- return null;
- }
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- // Dismiss the progress dialog
- if (pDialog.isShowing())
- pDialog.dismiss();
- /**
- * Updating parsed JSON data into ListView
- * */
- ListAdapter adapter = new SimpleAdapter(
- getActivity(), contactList,
- R.layout.list_item,
- new String[] { TAG_NAME, TAG_EMAIL,
- TAG_PHONE_MOBILE },
- new int[] { R.id.name,
- R.id.email, R.id.mobile });
- setListAdapter(adapter);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement