Saturday 23 January 2016

Display web service data in listview and gridview in android.


For integrating JSON service example you need below jar for that
1. apache-mime4j-0.6.jar
2. gson-2.1.jar
3. httpmime-4.0.1,jar
4. json_simple-1.1.jar

layout_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <RelativeLayout
        android:id="@+id/rel_tops"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <ImageView
            android:id="@+id/img_list_grid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="@dimen/margin_10dp"
            android:layout_alignParentRight="true"
            android:src="@drawable/grid_menu"/>

        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/img_list_grid"
            android:cacheColorHint="@android:color/transparent"
            android:divider="@android:color/transparent"
            android:visibility="visible"
            />

        <GridView
            android:id="@+id/grid"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:numColumns="2"
            android:layout_below="@+id/img_list_grid"
            android:visibility="gone"

            android:cacheColorHint="@android:color/transparent"
            android:divider="@android:color/transparent"
            />
    </RelativeLayout>



</RelativeLayout>

MainActivity.java
import android.app.Activity; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import parser.GetPerson; public class MainActivity extends AppCompatActivity {     ImageView mImageViewListGrid;     ListView mListView;     GridView mGridView;     CusTomListAdapter mCusTomListAdapter;     CusTomGridAdapter mCusTomGridAdapter;     PostParseGet mPostParseGet;     GetPerson mGetPerson;     ProgressDialog mProgressDialog;     AllMethods mAllMethods;     ArrayList<GetPerson.PersonDataList>mArrayListPersonDataLists;     boolean isGrid=false;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.layout_main);         /*Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);         setSupportActionBar(toolbar);*/         mImageViewListGrid=(ImageView)findViewById(R.id.img_list_grid);         mListView=(ListView)findViewById(R.id.list);         mGridView=(GridView)findViewById(R.id.grid);         mPostParseGet=new PostParseGet(MainActivity.this);         mGetPerson=new GetPerson();         mArrayListPersonDataLists=new ArrayList<>();         mAllMethods=new AllMethods(MainActivity.this);         if (mAllMethods.check_Internet()==true)         {             new getPersonAsyns().execute();         }         else         {             mAllMethods.ShowDialog(MainActivity.this,"",getString(R.string.net_not_available),"OK");         }         mImageViewListGrid.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 if (isGrid==false)                 {                     mImageViewListGrid.setImageDrawable(getResources().getDrawable(R.drawable.list_menu));                      isGrid=true;                     mListView.setVisibility(View.GONE);                     mGridView.setVisibility(View.VISIBLE);                 }                 else if (isGrid==true)                 {                     mImageViewListGrid.setImageDrawable(getResources().getDrawable(R.drawable.grid_menu));                     isGrid=false;                     mListView.setVisibility(View.VISIBLE);                     mGridView.setVisibility(View.GONE);                 }             }         });     }     public class getPersonAsyns extends AsyncTask<Void,Void,Void>     {         @Override         protected void onPreExecute() {             super.onPreExecute();             mProgressDialog=ProgressDialog.show(MainActivity.this,"","Loading..");         }         @Override         protected Void doInBackground(Void... voids) {             mGetPerson=(GetPerson)mPostParseGet.getPersonDetail(mGetPerson);             return null;         }         @Override         protected void onPostExecute(Void aVoid) {             super.onPostExecute(aVoid);             if (mProgressDialog!=null)             {                 mProgressDialog.dismiss();             }             if (mPostParseGet.isNetError)             {                 mAllMethods.ShowDialog(MainActivity.this,"",getString(R.string.net_not_available),"OK");             }             else if(mPostParseGet.isOtherError)             {                 mAllMethods.ShowDialog(MainActivity.this,"",getString(R.string.slow_internet),"Ok");             }             else             {                 mArrayListPersonDataLists=getPersonData();                 mCusTomListAdapter=new CusTomListAdapter(MainActivity.this,mArrayListPersonDataLists);                 mListView.setAdapter(mCusTomListAdapter);                 mCusTomGridAdapter=new CusTomGridAdapter(MainActivity.this,mArrayListPersonDataLists);                 mGridView.setAdapter(mCusTomGridAdapter);             }         }     }     public ArrayList<GetPerson.PersonDataList> getPersonData() {         ArrayList< GetPerson.PersonDataList> mArrayListParserLog = new ArrayList<  GetPerson.PersonDataList   >();         String  mString="";         for (int i = 0; i < mGetPerson.getContacts().size(); i++) {             GetPerson.PersonDataList  mParserLog = new   GetPerson.PersonDataList();             mParserLog.setName(mGetPerson.getContacts().get(i).getName());             mParserLog.setEmail(mGetPerson.getContacts().get(i).getEmail());             mParserLog.setGender(mGetPerson.getContacts().get(i).getGender());             GetPerson.PhoneDetail mPhoneDetail=new GetPerson.PhoneDetail();             mPhoneDetail.setMobile(mGetPerson.getContacts().get(i).getPhone().getMobile());             mParserLog.setPhone(mPhoneDetail);             mArrayListParserLog.add(mParserLog);         }         return mArrayListParserLog;     }     public class CusTomListAdapter extends BaseAdapter     {         Activity mActivity;         ArrayList<GetPerson.PersonDataList> list;         public CusTomListAdapter(MainActivity mainActivity, ArrayList<GetPerson.PersonDataList> mArrayListPersonDataLists) {             list=mArrayListPersonDataLists;             mActivity=mainActivity;         }         @Override         public int getCount() {             return list.size();         }         @Override         public Object getItem(int i) {             return i;         }         @Override         public long getItemId(int i) {             return i;         }         @Override         public View getView(int i, View convertView, ViewGroup viewGroup) {             LayoutInflater inflator = mActivity.getLayoutInflater();             convertView = inflator.inflate(R.layout.row_list_layout, null);             TextView mTextViewName=(TextView)convertView.findViewById(R.id.row_txt_name);             TextView mTextViewEmail=(TextView)convertView.findViewById(R.id.row_txt_email);             TextView mTextViewGender=(TextView)convertView.findViewById(R.id.row_txt_gender);             TextView mTextViewPh=(TextView)convertView.findViewById(R.id.row_txt_ph);             mTextViewEmail.setText(list.get(i).getEmail());             mTextViewGender.setText("Gender: "+list.get(i).getGender());             mTextViewName.setText(list.get(i).getName());             mTextViewPh.setText(list.get(i).getPhone().getMobile());             return convertView;         }     }     public class CusTomGridAdapter extends BaseAdapter     {         Activity mActivity;         ArrayList<GetPerson.PersonDataList> list;         public CusTomGridAdapter(MainActivity mainActivity, ArrayList<GetPerson.PersonDataList> mArrayListPersonDataLists) {             list=mArrayListPersonDataLists;             mActivity=mainActivity;         }         @Override         public int getCount() {             return list.size();         }         @Override         public Object getItem(int i) {             return i;         }         @Override         public long getItemId(int i) {             return i;         }         @Override         public View getView(int i, View convertView, ViewGroup viewGroup) {             LayoutInflater inflator = mActivity.getLayoutInflater();             convertView = inflator.inflate(R.layout.row_list_layout, null);             TextView mTextViewName=(TextView)convertView.findViewById(R.id.row_txt_name);             TextView mTextViewEmail=(TextView)convertView.findViewById(R.id.row_txt_email);             TextView mTextViewGender=(TextView)convertView.findViewById(R.id.row_txt_gender);             TextView mTextViewPh=(TextView)convertView.findViewById(R.id.row_txt_ph);             mTextViewEmail.setText(list.get(i).getEmail());             mTextViewGender.setText("Gender: "+list.get(i).getGender());             mTextViewName.setText(list.get(i).getName());             mTextViewPh.setText(list.get(i).getPhone().getMobile());             return convertView;         }     }     @Override     public boolean onCreateOptionsMenu(Menu menu) {         // Inflate the menu; this adds items to the action bar if it is present.         getMenuInflater().inflate(R.menu.menu_main, menu);         return true;     }     @Override     public boolean onOptionsItemSelected(MenuItem item) {         // Handle action bar item clicks here. The action bar will         // automatically handle clicks on the Home/Up button, so long         // as you specify a parent activity in AndroidManifest.xml.         int id = item.getItemId();         //noinspection SimplifiableIfStatement         if (id == R.id.action_settings) {             return true;         }         return super.onOptionsItemSelected(item);     } }
GetPerson.java
package parser; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; public class GetPerson implements Parcelable { public List<PersonDataList> contacts; public List<PersonDataList> getContacts() { return contacts; } public void setContacts(List<PersonDataList> contacts) { this.contacts = contacts; } public GetPerson(){ contacts=new ArrayList<PersonDataList>(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { } public static Creator<GetPerson> CREATOR = new Creator<GetPerson>() { @Override public GetPerson[] newArray(int size) { return new GetPerson[size]; } @Override public GetPerson createFromParcel(Parcel source) { return new GetPerson(source); } }; public GetPerson(Parcel in) { contacts=new ArrayList<PersonDataList>(); in.readTypedList(contacts, PersonDataList.CREATOR); } public static class PersonDataList implements Parcelable { String name=""; String email=""; String gender=""; public PhoneDetail phone; public PhoneDetail getPhone() { return phone; } public void setPhone(PhoneDetail phone) { this.phone = phone; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int i) { dest.writeString(name); dest.writeString(email); dest.writeString(gender); dest.writeParcelable(phone, i); } public static Creator<PersonDataList> CREATOR = new Creator<PersonDataList>() { @Override public PersonDataList[] newArray(int size) { return new PersonDataList[size]; } @Override public PersonDataList createFromParcel(Parcel source) { return new PersonDataList(source); } }; public PersonDataList(Parcel in) { name = in.readString(); email = in.readString(); gender = in.readString(); phone = (PhoneDetail) in.readParcelable(PhoneDetail.class.getClassLoader()); } public PersonDataList(){} } public static class PhoneDetail implements Parcelable { String mobile=""; public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int i) { dest.writeString(mobile); } public static Creator<PhoneDetail> CREATOR = new Creator<PhoneDetail>() { @Override public PhoneDetail[] newArray(int size) { return new PhoneDetail[size]; } @Override public PhoneDetail createFromParcel(Parcel source) { return new PhoneDetail(source); } }; public PhoneDetail (){} public PhoneDetail(Parcel in) { mobile = in.readString(); } } }
import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.support.v4.app.FragmentActivity; import com.google.gson.Gson; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import java.io.File; import java.util.ArrayList; import java.util.List; import parser.GetPerson; public class PostParseGet { public Activity mContext; public boolean isNetError = false; public boolean isOtherError = false; public boolean isDeviceToken = false; List<NameValuePair> nameValuePairs; Object mFillObject; public static ArrayList<String> mflist; ConnectivityManager mConnectivityManager; NetworkInfo mNetworkInfo; Gson mGson; public PostParseGet(Activity context) { mContext = context; mGson = new Gson(); mflist = new ArrayList<String>(); } public PostParseGet(FragmentActivity context) { mContext = context; mGson = new Gson(); mflist = new ArrayList<String>(); } public Object getmFillObject() { return mFillObject; } public void setmFillObject(Object mFillObject) { this.mFillObject = mFillObject; } public boolean isDeviceToken() { return isDeviceToken; } public void setDeviceToken(boolean isDeviceToken) { this.isDeviceToken = isDeviceToken; } /** * Function checks internet if avail, Post data to particular Url and filled * json object relating to the response. * * @param string * @param nameValuePairs * @param object * @param context * @return object * @throws CustomException */ public Object postHttpURL(String url, List<NameValuePair> nameValuePairs, Object mObject) { HttpPost httppost; HttpParams httpParameters; int timeoutConnection = 60000; HttpClient httpclient = null; HttpResponse response = null; String data = ""; isOtherError = false; System.out.println("Url " + url); mFillObject = null; if (check_Internet()) { try { mFillObject = mObject.getClass().newInstance(); /*HostnameVerifier hostnameVerifier = SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; DefaultHttpClient client = new DefaultHttpClient(); SchemeRegistry registry = new SchemeRegistry(); SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory(); socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); registry.register(new Scheme("https", socketFactory, 443)); SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry); DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams()); // Set verifier HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);*/ // HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); httppost = new HttpPost(url); httpParameters = new BasicHttpParams(); // HttpConnectionParams.setSoTimeout(httpParameters, timeoutConnection); HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); httpclient = new DefaultHttpClient(httpParameters); MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); System.out.println("nameValuePairs " + nameValuePairs.size()); if (nameValuePairs != null) { for (int index = 0; index < nameValuePairs.size(); index++) { String paramName = nameValuePairs.get(index).getName(); String paramValue = nameValuePairs.get(index).getValue(); System.out.println("paramName " + paramName); System.out.println("paramValue " + paramValue); if (paramName.equalsIgnoreCase("docsimage") || paramName.equalsIgnoreCase("faceimage")) { if (paramValue.length() > 0) { /*if (paramValue.equalsIgnoreCase("Female-Avatar.png")||paramValue.equalsIgnoreCase("avatar-man.jpg") ) { entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue())); } else {*/ entity.addPart(paramName, new FileBody(new File(paramValue))); //} } } else { // mflist.clear(); entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue())); } } httppost.setEntity(entity); } response = httpclient.execute(httppost); System.out.println("httppost " + httppost.toString()); data = EntityUtils.toString(response.getEntity()); System.out.println("Final Data " + data); if (data.equalsIgnoreCase("{\"is_device_deleted\":true}")) setDeviceToken(true); mFillObject = mGson.fromJson(data, mFillObject.getClass()); } catch (Exception e) { isOtherError = true; e.printStackTrace(); } } return mFillObject; } /** * Function * Takes and keeps a reference of the passed context in order to Check whether Internet is available or not. * * @param context * @return The return will be true if the internet is available and false if not. */ public boolean check_Internet() { mConnectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mNetworkInfo != null && mNetworkInfo.isConnectedOrConnecting()) { isNetError = false; return true; } else { isNetError = true; return false; } } public Object getPersonDetail(GetPerson mGetFlag) { nameValuePairs = new ArrayList<NameValuePair>(); return postHttpURL("http://api.androidhive.info/contacts/", nameValuePairs, mGetFlag); } }

No comments:

Post a Comment