Android Asyntask Get JSON Object Into ListView

Back again we discuss about Android ListView, for this time we will try to use AsynTask to take JSON object to show to ListView with custom adapter.Okay we just let it fast

First time add below code to your activity_main.xml, here i using name codingsheep.xml for listing ListView in main.

    
    
    
    
    


Now create new layout for models of items ListView, item_listmodel.xml.

    


Create data models Set and Get method String, Like this code CDModel.java.
package com.codingsheep.codingsheep;

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

public class CDModels {
    private String CodingSheep;

    public String getCodingSheep() {
        return CodingSheep;
    }

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

And finally code below add to Your MainActivity, for now i using name CodingSheep.java for my project.
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 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);

        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.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"));

                    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);

            }  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);
                convertView.setTag(holderP);
            } else {
                holderP = (CODINGSHEEPAdapter.ViewHolder) convertView.getTag();
            }

            holderP.Text.setText(list.get(position).getCodingSheep());
            return convertView;
        }

        class ViewHolder {
            private TextView Text;
        }
    }
}

This Link For Simple JSON txt http://aitmbel.org/wp-content/uploads/2017/05/JSON-CODINGSHEEP.txt

This for JSON preview Object

[ 
    {
  "number": "1",
  "codingsheep": "Hello Android"  
    },
        {
  "number": "2",
  "codingsheep": "CodingSheep Android"  
    },
        {
  "number": "3",
  "codingsheep": "Android Happy Coding"  
    },
        {
  "number": "4",
  "codingsheep": "Im Is Developers"  
    },
        {
  "number": "5",
  "codingsheep": "I Like This CodingSheep"  
    }
]

Good Job :D

4 Responses to "Android Asyntask Get JSON Object Into ListView"