AndroidManiFest File :-
Java Files :-
1) Main Activity:-
2) Actors:-
3) Actor Adapter :-
Drawable Images :-
Layout Files (XML):-
1)activity_main.xml:
2) row.xml:-
Menu Folder Layout Files (XML):
1) Main.xml:-
Values Files (XML) :
1) colors.xml:-
2) dimens.xml:-
3) string.xml:-
4) styles.xml:-
Build Gradle :
Output: -
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ocean.myapplication"
android:versionCode="1"
android:versionName="1.0"> <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="26"> </uses-sdk> <uses-permission
android:name="android.permission.INTERNET"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN"
android:label="@string/app_name"/> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
Java Files :-
1) Main Activity:-
package com.ocean.myapplication; import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity; import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
public class MainActivity extends Activity { ArrayList<Actors> actorsList; ActorAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actorsList = new ArrayList<Actors>();
new JSONAsyncTask().execute
("http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors");
ListView listview = (ListView)findViewById(R.id.list);
adapter = new ActorAdapter(getApplicationContext(), R.layout.row, actorsList); listview.setAdapter(adapter); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { // TODO Auto-generated method stub
Toast.makeText(
getApplicationContext(), actorsList.get(position).getName(),
Toast.LENGTH_LONG).show();
}
});
} class JSONAsyncTask extends AsyncTask<String, Void, Boolean> { ProgressDialog dialog; @Override
protected void onPreExecute() { super.onPreExecute();
dialog = new ProgressDialog(MainActivity.this);
dialog.setMessage("Loading, please wait");
dialog.setTitle("Connecting server");
dialog.show();
dialog.setCancelable(false);
} @Override
protected Boolean doInBackground(String... urls) { try { //------------------>>
HttpGet httppost = new HttpGet(urls[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
// StatusLine stat = response.getStatusLine();
int status = response.getStatusLine().getStatusCode(); if (status == 200) { HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity); JSONObject jsono = new JSONObject(data);
JSONArray jarray = jsono.getJSONArray("actors"); for (int i = 0; i < jarray.length(); i++) { JSONObject object = jarray.getJSONObject(i); Actors actor = new Actors(); actor.setName(object.getString("name"));
actor.setDescription(object.getString("description"));
actor.setDob(object.getString("dob"));
actor.setCountry(object.getString("country"));
actor.setHeight(object.getString("height"));
actor.setSpouse(object.getString("spouse"));
actor.setChildren(object.getString("children"));
actor.setImage(object.getString("image")); actorsList.add(actor);
} return true;
} //------------------>> }
catch (org.apache.http.ParseException e1)
{
e1.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (JSONException e)
{
e.printStackTrace();
} return false;
} protected void onPostExecute(Boolean result) { dialog.cancel();
adapter.notifyDataSetChanged();
if(result == false) Toast.makeText(
getApplicationContext(), "Unable to fetch data from server",
Toast.LENGTH_LONG).show(); } } }
2) Actors:-
package com.ocean.myapplication; /** * Created by abc on 10/03/2018. */ public class Actors { private String name;
private String description;
private String dob;
private String country;
private String height;
private String spouse;
private String children;
private String image; public Actors() { // TODO Auto-generated constructor stub
} public Actors(String name, String description, String dob, String country,
String height, String spouse, String children, String image) { super();
this.name = name;
this.description = description;
this.dob = dob;
this.country = country;
this.height = height;
this.spouse = spouse;
this.children = children;
this.image = image;
} public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getDob() { return dob; } public void setDob(String dob) { this.dob = dob; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } public String getSpouse() { return spouse; } public void setSpouse(String spouse) { this.spouse = spouse; } public String getChildren() { return children; } public void setChildren(String children) { this.children = children; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } }
3) Actor Adapter :-
package com.ocean.myapplication; import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView; import java.io.InputStream;
import java.util.ArrayList; /** * Created by abc on 10/03/2018. */ public class ActorAdapter extends ArrayAdapter<Actors> { ArrayList<Actors> actorList;
LayoutInflater vi;
int Resource;
ViewHolder holder; public ActorAdapter(Context context, int resource, ArrayList<Actors> objects) { super(context, resource, objects);
vi = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Resource = resource;
actorList = objects;
} @Override public View getView(int position, View convertView, ViewGroup parent) { // convert view = design
View v = convertView;
if (v == null) { holder = new ViewHolder();
v = vi.inflate(Resource, null);
holder.imageview = (ImageView) v.findViewById(R.id.ivImage);
holder.tvName = (TextView) v.findViewById(R.id.tvName);
holder.tvDescription = (TextView) v.findViewById(R.id.tvDescriptionn);
holder.tvDOB = (TextView) v.findViewById(R.id.tvDateOfBirth);
holder.tvCountry = (TextView) v.findViewById(R.id.tvCountry);
holder.tvHeight = (TextView) v.findViewById(R.id.tvHeight);
holder.tvSpouse = (TextView) v.findViewById(R.id.tvSpouse);
holder.tvChildren = (TextView) v.findViewById(R.id.tvChildren);
v.setTag(holder);
}
else
{ holder = (ViewHolder) v.getTag(); } holder.imageview.setImageResource(R.drawable.ic_launcher);
new DownloadImageTask(holder.imageview).execute(actorList.get(position).getImage()); holder.tvName.setText(actorList.get(position).getName()); holder.tvDescription.setText(actorList.get(position).getDescription()); holder.tvDOB.setText("B'day: " + actorList.get(position).getDob()); holder.tvCountry.setText(actorList.get(position).getCountry()); holder.tvHeight.setText("Height: " + actorList.get(position).getHeight()); holder.tvSpouse.setText("Spouse: " + actorList.get(position).getSpouse()); holder.tvChildren.setText("Children: " + actorList.get(position).getChildren()); return v; } static class ViewHolder { public ImageView imageview;
public TextView tvName;
public TextView tvDescription;
public TextView tvDOB;
public TextView tvCountry;
public TextView tvHeight;
public TextView tvSpouse;
public TextView tvChildren; } private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { ImageView bmImage; public DownloadImageTask(ImageView bmImage) { this.bmImage = bmImage; } protected Bitmap doInBackground(String... urls) { String urldisplay = urls[0];
Bitmap mIcon11 = null;
try { InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
}
catch (Exception e)
{
Log.e("Error", e.getMessage());
e.printStackTrace();
} return mIcon11;
} protected void onPostExecute(Bitmap result)
{
bmImage.setImageBitmap(result);
}
}
}
Drawable Images :-
Layout Files (XML):-
1)activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#F1F1F1" tools:context="com.ocean.myapplication.MainActivity"> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" tools:listitem="@layout/row" > </ListView> </RelativeLayout>
2) row.xml:-
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="4dp" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/ivImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="8dp" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/tvName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tom Cruise" android:textColor="#166CED" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/tvDateOfBirth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#D64530" android:text="Date of Birth: July 3, 1962" /> <TextView android:id="@+id/tvHeight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Height: 1.80 m" android:textColor="#D64530" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/tvCountry" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#D64530" android:text="United States" /> </LinearLayout> </LinearLayout> <TextView android:id="@+id/tvDescriptionn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#009A57" android:text="Description" /> <TextView android:id="@+id/tvSpouse" android:layout_width="wrap_content" android:textColor="#166CED" android:layout_height="wrap_content" android:text="Spouse: Katie Holmes" /> <TextView android:id="@+id/tvChildren" android:layout_width="wrap_content" android:textColor="#166CED" android:layout_height="wrap_content" android:text="Children: Suri Cruise, Isabella Jane Cruise, Connor Cruise" /> </LinearLayout>
Menu Folder Layout Files (XML):
1) Main.xml:-
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings"/> </menu>
Values Files (XML) :
1) colors.xml:-
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color></resources>
2) dimens.xml:-
<?xml version="1.0" encoding="utf-8"?><resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> </resources>
3) string.xml:-
<resources> <string name="app_name">JSON Parsing for Image Tutorial</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> </resources>
4) styles.xml:-
<resources> <!-- Base application theme, dependent on API level. This theme is replaced by AppBaseTheme from res/values-vXX/styles.xml on newer devices. --> <style name="AppBaseTheme" parent="android:Theme.Light"> <!-- Theme customizations available in newer API levels can go in res/values-vXX/styles.xml, while customizations related to backward-compatibility can go here. --> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style></resources>
Build Gradle :
apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { applicationId "com.ocean.myapplication" minSdkVersion 14 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' compile 'com.android.support:recyclerview-v7:26.1.0' compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'}
Output: -


No comments:
Post a Comment