Friday, March 9, 2018

Get Images From Live URL

AndroidManiFest File :-

<?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