Android How To Get JSON and Create Stylish Custom Adapter ListView With Image

I will show you all to get JSON Object and create a stylish custom adapter, CodingSheep always provide complete tutorial and various adapter model as per requirement of android application developer. Make ListView more charming and interesting. Immediately, we begin: D

Now, we need add some libraries to make List Application stylish with CardView, for populating ImageView in items im using UniversalImageLoader Libraries.

Oke, Now you must create one layout XML for item ListView Style.
item_listmodel.xml


    
        
            
                
            
            
                
            
        
    

Add this code to your activity_main.xml
codingsheep.xml

    
    
    
    
    

Creating Models For Set and Get JSON Object List<Object>
CDModels.java
package com.codingsheep.codingsheep;

/**
 * Created by CODING SHEEP on 5/19/2017.
 */

public class CDModels {
    private String CodingSheep;
    private String ImageURL;
    private String Message;

    public String getCodingSheep() {
        return CodingSheep;
    }

    public void setCodingSheep(String codingSheep) {
        CodingSheep = codingSheep;
    }

    public String getImageURL() {
        return ImageURL;
    }

    public void setImageURL(String imageURL) {
        ImageURL = imageURL;
    }

    public String getMessage() {
        return Message;
    }

    public void setMessage(String message) {
        Message = message;
    }
}
Add this code to your Main_Activity.java
Codingsheep.java
package com.codingsheep.codingsheep;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by CODING SHEEP on 05/19/2017.
 */

public class CodingSheep extends AppCompatActivity {

    ListView LVcodingsheep;
    ProgressBar proccess;
    Button getnow;

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

        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .defaultDisplayImageOptions(defaultOptions)
                .build();
        ImageLoader.getInstance().init(config);

        LVcodingsheep = (ListView)findViewById(R.id.codingsheepLV);
        getnow = (Button)findViewById(R.id.get);
        proccess = (ProgressBar)findViewById(R.id.process);

        getnow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new GoJSON().execute("http://aitmbel.org/wp-content/uploads/2017/05/JSON-CODINGSHEEP-IMAGE-MESSAGE.txt");
            }
        });

    }

    public class GoJSON extends AsyncTask>{

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            proccess.setVisibility(View.VISIBLE);
        }

        @Override
        protected List doInBackground(String... params) {
            HttpURLConnection connection = null;
            BufferedReader reader = null;
            try {
                URL url = new URL(params[0]);
                connection = (HttpURLConnection) url.openConnection();
                connection.connect();
                InputStream stream = connection.getInputStream();
                reader = new BufferedReader(new InputStreamReader(stream));
                StringBuffer buffer = new StringBuffer();
                String line = "";
                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }

                String HAStringBuffer = buffer.toString();
                List CDList = new ArrayList<>();
                JSONArray arayobjek = new JSONArray(HAStringBuffer);
                for (int i = 0; i < arayobjek.length(); ++i) {
                    JSONObject finalobjek = arayobjek.getJSONObject(i);
                    CDModels Get = new CDModels();

                    Get.setCodingSheep(finalobjek.getString("codingsheep"));
                    Get.setImageURL(finalobjek.getString("imageurl"));
                    Get.setMessage(finalobjek.getString("message"));

                    CDList.add(Get);
                }
                return CDList;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
                try {
                    if (reader != null) {
                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(final List result) {
            super.onPostExecute(result);
            proccess.setVisibility(View.GONE);
            if (result != null) {

                CODINGSHEEPAdapter adapter = new CODINGSHEEPAdapter(CodingSheep.this.getApplicationContext(), R.layout.item_listmodel, result);
                LVcodingsheep.setAdapter(adapter);
                LVcodingsheep.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView parent, View view, int position, long id) {
                        CDModels get = result.get(position);

                        Toast.makeText(getApplicationContext(), get.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });

            }  else {

                Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();

            }
        }
    }

    private class CODINGSHEEPAdapter extends ArrayAdapter {
        private List list;
        private int resource;
        private LayoutInflater inflater;

        private CODINGSHEEPAdapter(Context context, int resource, List objects) {
            super(context, resource, objects);
            list = objects;
            this.resource = resource;
            inflater = (LayoutInflater)CodingSheep.this.getSystemService(LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            CODINGSHEEPAdapter.ViewHolder holderP = null;

            if (convertView == null) {
                holderP = new CODINGSHEEPAdapter.ViewHolder();
                convertView = inflater.inflate(resource, null);
                holderP.Text = (TextView) convertView.findViewById(R.id.text);
                holderP.Image = (ImageView) convertView.findViewById(R.id.image);
                convertView.setTag(holderP);
            } else {
                holderP = (CODINGSHEEPAdapter.ViewHolder) convertView.getTag();
            }

            ImageLoader.getInstance().displayImage(list.get(position).getImageURL(), holderP.Image, new ImageLoadingListener() {
                @Override
                public void onLoadingStarted(String imageUri, View view) {
                }

                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                }

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                }

                @Override
                public void onLoadingCancelled(String imageUri, View view) {
                }
            });
            holderP.Text.setText(list.get(position).getCodingSheep());
            return convertView;
        }

        class ViewHolder {
            private TextView Text;
            private ImageView Image;
        }
    }
} 




OnItemClickListener you can make that intent to other activity, ListView's most popular style is how you can make it look captivating, therefore CodingSheep always provide effective tutorials and help for you beginners.

And now i will give you better, for add ListView Animation OnItemClickListener.

Create new anim layout resource animbounce.xml

     


And add this on your OnItemClickListener.

 @Override
  public void onItemClick(AdapterView parent, View view, int position, long id) {
     CDModels get = result.get(position);
     Animation anim = AnimationUtils.loadAnimation(getActivity(), R.anim.animbounce);
     anim .getFillAfter();
     anim .getInterpolator();
     view.startAnimation(anim);Toast.LENGTH_LONG).show();
        } 

This is code Link https://goo.gl/yq5jJq and for JSON Previews :

[ 
    {
  "number": "1",
  "codingsheep": "Hello Android",
  "imageurl":"http://www.iconpr.com.au/uploads/styles/feature/uploads/features/preview/Y82bI-Tencent_Logo_icon_3.png",
  "message":"Congrats Bro By Hello Android"
    },
        {
  "number": "2",
  "codingsheep": "CodingSheep Android",
  "imageurl":"https://image.flaticon.com/teams/new/1-freepik.jpg",
  "message":"Congrats Bro By CodingSheep Android"
    },
        {
  "number": "3",
  "codingsheep": "Android Happy Coding",
  "imageurl":"http://www.iconarchive.com/download/i85616/graphicloads/100-flat/settings-3.ico",
  "message":"Congrats Bro By Android Happy Coding"
    },
        {
  "number": "4",
  "codingsheep": "Im Is Developers",
  "imageurl":"https://lh5.ggpht.com/8h4a-QzLFHu3pxFZ-Np8AyyUCq1G97T1_7F3ScjbBaxb6wGSdoCLHanFtnQa9kbg0d4=w300",
  "message":"Congrats Bro By Im Is Developers"
    },
        {
  "number": "5",
  "codingsheep": "I Like This CodingSheep",
  "imageurl":"http://www.todoapk.net/wp-content/uploads/2015/10/elun-icon-pack.png",
  "message":"I Like This CodingSheep"
    }
]

This tutorial 100% published by CodingSheep but not have any image to display hehehe. I just have a sample of thats project you can download :

APK : https://goo.gl/A6FLO6
COMPRESSED PROJECT RAR : https://goo.gl/sZELww with PASSWORD : CODINGSHEEP

Okay, hope that may save your days :D happy coding and don't stop for create imagination. Regards

0 Response to "Android How To Get JSON and Create Stylish Custom Adapter ListView With Image"

Post a Comment