├── .gitignore ├── JSONParsingUsingOkHTTP.iml ├── README.md ├── app ├── .gitignore ├── app.iml ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── androidbuts │ │ └── jsonparsing │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── androidbuts │ │ │ └── jsonparsing │ │ │ ├── MainActivity.java │ │ │ ├── adapter │ │ │ └── MyArrayAdapter.java │ │ │ ├── model │ │ │ └── MyDataModel.java │ │ │ ├── parser │ │ │ └── JSONParser.java │ │ │ └── utils │ │ │ ├── InternetConnection.java │ │ │ └── Keys.java │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ └── layout_row_view.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── androidbuts │ └── jsonparsingusingokhttp │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── json_data.json └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | <<<<<<< HEAD 2 | /.idea 3 | 4 | # Built application files 5 | *.apk 6 | *.ap_ 7 | 8 | # Files for the Dalvik VM 9 | *.dex 10 | 11 | # Java class files 12 | *.class 13 | 14 | # Generated files 15 | bin/ 16 | gen/ 17 | 18 | # Gradle files 19 | .gradle/ 20 | /build 21 | 22 | # Local configuration file (sdk path, etc) 23 | local.properties 24 | 25 | # Proguard folder generated by Eclipse 26 | proguard/ 27 | 28 | # Log Files 29 | *.log 30 | 31 | # Android Studio Navigation editor temp files 32 | .navigation/ 33 | 34 | # Android Studio captures folder 35 | captures/ 36 | -------------------------------------------------------------------------------- /JSONParsingUsingOkHTTP.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JSONParsingUsingOkHTTP 2 | Demo for JSON Parsing using okHttp Library 3 | 4 | [Android JSON Parsing Using okHttp Example with New Material Design Library](http://www.pratikbutani.com/2015/12/android-json-parsing-using-okhttp-example-with-new-material-design-library/) 5 | 6 | [Android JSON Parsing Using okHttp Example with Custom View (ImageView + TextView](http://www.pratikbutani.com/2016/01/android-json-parsing-using-okhttp-example-with-custom-view-imageview-textview/) 7 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.1" 6 | defaultConfig { 7 | applicationId 'com.androidbuts.jsonparsing' 8 | minSdkVersion 10 9 | targetSdkVersion 23 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | productFlavors { 20 | } 21 | } 22 | 23 | dependencies { 24 | compile fileTree(include: ['*.jar'], dir: 'libs') 25 | androidTestCompile 'junit:junit:4.12' 26 | compile 'com.android.support:appcompat-v7:23.1.0' 27 | compile 'com.android.support:design:23.1.0' 28 | compile 'com.squareup.okhttp:okhttp:2.4.0' 29 | compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' 30 | compile 'com.squareup.picasso:picasso:2.4.0' 31 | } 32 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in E:\Android\Android_SDK_and_Eclipse\andriod-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/androidbuts/jsonparsing/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.androidbuts.jsonparsing; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/androidbuts/jsonparsing/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.androidbuts.jsonparsing; 2 | 3 | import android.app.ProgressDialog; 4 | import android.os.AsyncTask; 5 | import android.os.Bundle; 6 | import android.support.annotation.NonNull; 7 | import android.support.annotation.Nullable; 8 | import android.support.design.widget.FloatingActionButton; 9 | import android.support.design.widget.Snackbar; 10 | import android.support.v7.app.AppCompatActivity; 11 | import android.support.v7.widget.Toolbar; 12 | import android.util.Log; 13 | import android.view.Gravity; 14 | import android.view.View; 15 | import android.widget.AdapterView; 16 | import android.widget.ListView; 17 | import android.widget.Toast; 18 | 19 | import com.androidbuts.jsonparsing.adapter.MyArrayAdapter; 20 | import com.androidbuts.jsonparsing.model.MyDataModel; 21 | import com.androidbuts.jsonparsing.parser.JSONParser; 22 | import com.androidbuts.jsonparsing.utils.InternetConnection; 23 | import com.androidbuts.jsonparsing.utils.Keys; 24 | 25 | import org.json.JSONArray; 26 | import org.json.JSONException; 27 | import org.json.JSONObject; 28 | 29 | import java.util.ArrayList; 30 | 31 | public class MainActivity extends AppCompatActivity { 32 | 33 | private ListView listView; 34 | private ArrayList list; 35 | private MyArrayAdapter adapter; 36 | 37 | @Override 38 | protected void onCreate(Bundle savedInstanceState) { 39 | super.onCreate(savedInstanceState); 40 | setContentView(R.layout.activity_main); 41 | 42 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 43 | setSupportActionBar(toolbar); 44 | 45 | /** 46 | * Array List for Binding Data from JSON to this List 47 | */ 48 | list = new ArrayList<>(); 49 | /** 50 | * Binding that List to Adapter 51 | */ 52 | adapter = new MyArrayAdapter(this, list); 53 | 54 | /** 55 | * Getting List and Setting List Adapter 56 | */ 57 | listView = (ListView) findViewById(R.id.listView); 58 | listView.setAdapter(adapter); 59 | listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 60 | @Override 61 | public void onItemClick(AdapterView parent, View view, int position, long id) { 62 | Snackbar.make(findViewById(R.id.parentLayout), list.get(position).getName() + " => " + list.get(position).getPhone(), Snackbar.LENGTH_LONG).show(); 63 | } 64 | }); 65 | 66 | /** 67 | * Just to know onClick and Printing Hello Toast in Center. 68 | */ 69 | Toast toast = Toast.makeText(getApplicationContext(), "Click on FloatingActionButton to Load JSON", Toast.LENGTH_LONG); 70 | toast.setGravity(Gravity.CENTER, 0, 0); 71 | toast.show(); 72 | 73 | FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 74 | fab.setOnClickListener(new View.OnClickListener() { 75 | @Override 76 | public void onClick(@NonNull View view) { 77 | 78 | /** 79 | * Checking Internet Connection 80 | */ 81 | if (InternetConnection.checkConnection(getApplicationContext())) { 82 | new GetDataTask().execute(); 83 | } else { 84 | Snackbar.make(view, "Internet Connection Not Available", Snackbar.LENGTH_LONG).show(); 85 | } 86 | } 87 | }); 88 | } 89 | 90 | /** 91 | * Creating Get Data Task for Getting Data From Web 92 | */ 93 | class GetDataTask extends AsyncTask { 94 | 95 | ProgressDialog dialog; 96 | 97 | @Override 98 | protected void onPreExecute() { 99 | super.onPreExecute(); 100 | /** 101 | * Progress Dialog for User Interaction 102 | */ 103 | dialog = new ProgressDialog(MainActivity.this); 104 | dialog.setTitle("Hey Wait Please..."); 105 | dialog.setMessage("I am getting your JSON"); 106 | dialog.show(); 107 | } 108 | 109 | @Nullable 110 | @Override 111 | protected Void doInBackground(Void... params) { 112 | 113 | /** 114 | * Getting JSON Object from Web Using okHttp 115 | */ 116 | JSONObject jsonObject = JSONParser.getDataFromWeb(); 117 | 118 | try { 119 | /** 120 | * Check Whether Its NULL??? 121 | */ 122 | if (jsonObject != null) { 123 | /** 124 | * Check Length... 125 | */ 126 | if(jsonObject.length() > 0) { 127 | /** 128 | * Getting Array named "contacts" From MAIN Json Object 129 | */ 130 | JSONArray array = jsonObject.getJSONArray(Keys.KEY_CONTACTS); 131 | 132 | /** 133 | * Check Length of Array... 134 | */ 135 | int lenArray = array.length(); 136 | if(lenArray > 0) { 137 | for(int jIndex = 0; jIndex < lenArray; jIndex++) { 138 | 139 | /** 140 | * Creating Every time New Object 141 | * and 142 | * Adding into List 143 | */ 144 | MyDataModel model = new MyDataModel(); 145 | 146 | /** 147 | * Getting Inner Object from contacts array... 148 | * and 149 | * From that We will get Name of that Contact 150 | * 151 | */ 152 | JSONObject innerObject = array.getJSONObject(jIndex); 153 | String name = innerObject.getString(Keys.KEY_NAME); 154 | String email = innerObject.getString(Keys.KEY_EMAIL); 155 | String image = innerObject.getString(Keys.KEY_PROFILE_PIC); 156 | 157 | /** 158 | * Getting Object from Object "phone" 159 | */ 160 | JSONObject phoneObject = innerObject.getJSONObject(Keys.KEY_PHONE); 161 | String phone = phoneObject.getString(Keys.KEY_MOBILE); 162 | 163 | model.setName(name); 164 | model.setEmail(email); 165 | model.setPhone(phone); 166 | model.setImage(image); 167 | 168 | /** 169 | * Adding name and phone concatenation in List... 170 | */ 171 | list.add(model); 172 | } 173 | } 174 | } 175 | } else { 176 | 177 | } 178 | } catch (JSONException je) { 179 | Log.i(JSONParser.TAG, "" + je.getLocalizedMessage()); 180 | } 181 | return null; 182 | } 183 | 184 | @Override 185 | protected void onPostExecute(Void aVoid) { 186 | super.onPostExecute(aVoid); 187 | dialog.dismiss(); 188 | /** 189 | * Checking if List size if more than zero then 190 | * Update ListView 191 | */ 192 | if(list.size() > 0) { 193 | adapter.notifyDataSetChanged(); 194 | } else { 195 | Snackbar.make(findViewById(R.id.parentLayout), "No Data Found", Snackbar.LENGTH_LONG).show(); 196 | } 197 | } 198 | } 199 | } -------------------------------------------------------------------------------- /app/src/main/java/com/androidbuts/jsonparsing/adapter/MyArrayAdapter.java: -------------------------------------------------------------------------------- 1 | package com.androidbuts.jsonparsing.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.ArrayAdapter; 8 | import android.widget.ImageView; 9 | import android.widget.RelativeLayout; 10 | import android.widget.TextView; 11 | 12 | import com.androidbuts.jsonparsing.R; 13 | import com.androidbuts.jsonparsing.model.MyDataModel; 14 | import com.squareup.picasso.Picasso; 15 | 16 | import java.util.List; 17 | 18 | public class MyArrayAdapter extends ArrayAdapter { 19 | 20 | List modelList; 21 | Context context; 22 | private LayoutInflater mInflater; 23 | 24 | // Constructors 25 | public MyArrayAdapter(Context context, List objects) { 26 | super(context, 0, objects); 27 | this.context = context; 28 | this.mInflater = LayoutInflater.from(context); 29 | modelList = objects; 30 | } 31 | 32 | @Override 33 | public MyDataModel getItem(int position) { 34 | return modelList.get(position); 35 | } 36 | 37 | @Override 38 | public View getView(int position, View convertView, ViewGroup parent) { 39 | final ViewHolder vh; 40 | if (convertView == null) { 41 | View view = mInflater.inflate(R.layout.layout_row_view, parent, false); 42 | vh = ViewHolder.create((RelativeLayout) view); 43 | view.setTag(vh); 44 | } else { 45 | vh = (ViewHolder) convertView.getTag(); 46 | } 47 | 48 | MyDataModel item = getItem(position); 49 | 50 | vh.textViewName.setText(item.getName()); 51 | vh.textViewEmail.setText(item.getEmail()); 52 | Picasso.with(context).load(item.getImage()).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(vh.imageView); 53 | 54 | return vh.rootView; 55 | } 56 | 57 | /** 58 | * ViewHolder class for layout.
59 | *
60 | * Auto-created on 2016-01-05 00:50:26 by Android Layout Finder 61 | * (http://www.buzzingandroid.com/tools/android-layout-finder) 62 | */ 63 | private static class ViewHolder { 64 | public final RelativeLayout rootView; 65 | public final ImageView imageView; 66 | public final TextView textViewName; 67 | public final TextView textViewEmail; 68 | 69 | private ViewHolder(RelativeLayout rootView, ImageView imageView, TextView textViewName, TextView textViewEmail) { 70 | this.rootView = rootView; 71 | this.imageView = imageView; 72 | this.textViewName = textViewName; 73 | this.textViewEmail = textViewEmail; 74 | } 75 | 76 | public static ViewHolder create(RelativeLayout rootView) { 77 | ImageView imageView = (ImageView) rootView.findViewById(R.id.imageView); 78 | TextView textViewName = (TextView) rootView.findViewById(R.id.textViewName); 79 | TextView textViewEmail = (TextView) rootView.findViewById(R.id.textViewEmail); 80 | return new ViewHolder(rootView, imageView, textViewName, textViewEmail); 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /app/src/main/java/com/androidbuts/jsonparsing/model/MyDataModel.java: -------------------------------------------------------------------------------- 1 | package com.androidbuts.jsonparsing.model; 2 | 3 | /** 4 | * Created by Pratik on 04-Jan-16. 5 | */ 6 | public class MyDataModel { 7 | 8 | private int id; 9 | 10 | private String name; 11 | 12 | private String image; 13 | 14 | private String email; 15 | 16 | private String phone; 17 | 18 | public int getId() { 19 | return id; 20 | } 21 | 22 | public void setId(int id) { 23 | this.id = id; 24 | } 25 | 26 | public String getName() { 27 | return name; 28 | } 29 | 30 | public void setName(String name) { 31 | this.name = name; 32 | } 33 | 34 | public String getImage() { 35 | return image; 36 | } 37 | 38 | public void setImage(String image) { 39 | this.image = image; 40 | } 41 | 42 | public String getEmail() { 43 | return email; 44 | } 45 | 46 | public void setEmail(String email) { 47 | this.email = email; 48 | } 49 | 50 | public String getPhone() { 51 | return phone; 52 | } 53 | 54 | public void setPhone(String phone) { 55 | this.phone = phone; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/com/androidbuts/jsonparsing/parser/JSONParser.java: -------------------------------------------------------------------------------- 1 | package com.androidbuts.jsonparsing.parser; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.util.Log; 5 | 6 | import com.squareup.okhttp.FormEncodingBuilder; 7 | import com.squareup.okhttp.OkHttpClient; 8 | import com.squareup.okhttp.Request; 9 | import com.squareup.okhttp.RequestBody; 10 | import com.squareup.okhttp.Response; 11 | 12 | import org.json.JSONException; 13 | import org.json.JSONObject; 14 | 15 | import java.io.IOException; 16 | 17 | 18 | /** 19 | * @author Pratik Butani 20 | */ 21 | public class JSONParser { 22 | 23 | /******** 24 | * URLS 25 | *******/ 26 | private static final String MAIN_URL = "http://pratikbutani.x10.mx/json_data.json"; 27 | 28 | /** 29 | * TAGs Defined Here... 30 | */ 31 | public static final String TAG = "TAG"; 32 | 33 | /** 34 | * Key to Send 35 | */ 36 | private static final String KEY_USER_ID = "user_id"; 37 | 38 | /** 39 | * Response 40 | */ 41 | private static Response response; 42 | 43 | /** 44 | * Get Table Booking Charge 45 | * 46 | * @return JSON Object 47 | */ 48 | public static JSONObject getDataFromWeb() { 49 | try { 50 | OkHttpClient client = new OkHttpClient(); 51 | Request request = new Request.Builder() 52 | .url(MAIN_URL) 53 | .build(); 54 | response = client.newCall(request).execute(); 55 | return new JSONObject(response.body().string()); 56 | } catch (@NonNull IOException | JSONException e) { 57 | Log.e(TAG, "" + e.getLocalizedMessage()); 58 | } 59 | return null; 60 | } 61 | 62 | /** 63 | * Get Particular Record 64 | * 65 | * @param userId UserId 66 | * @return JSONObject 67 | */ 68 | public static JSONObject getDataById(int userId) { 69 | 70 | try { 71 | OkHttpClient client = new OkHttpClient(); 72 | 73 | RequestBody formBody = new FormEncodingBuilder() 74 | .add(KEY_USER_ID, Integer.toString(userId)) 75 | .build(); 76 | 77 | Request request = new Request.Builder() 78 | .url(MAIN_URL) 79 | .post(formBody) 80 | .build(); 81 | 82 | response = client.newCall(request).execute(); 83 | return new JSONObject(response.body().string()); 84 | 85 | } catch (IOException | JSONException e) { 86 | Log.e(TAG, "" + e.getLocalizedMessage()); 87 | } 88 | return null; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /app/src/main/java/com/androidbuts/jsonparsing/utils/InternetConnection.java: -------------------------------------------------------------------------------- 1 | package com.androidbuts.jsonparsing.utils; 2 | 3 | import android.content.Context; 4 | import android.net.ConnectivityManager; 5 | import android.support.annotation.NonNull; 6 | 7 | /** 8 | * 9 | * @author Pratik Butani 10 | * 11 | */ 12 | public class InternetConnection { 13 | 14 | /** CHECK WHETHER INTERNET CONNECTION IS AVAILABLE OR NOT */ 15 | public static boolean checkConnection(@NonNull Context context) { 16 | return ((ConnectivityManager) context.getSystemService 17 | (Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo() != null; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/androidbuts/jsonparsing/utils/Keys.java: -------------------------------------------------------------------------------- 1 | package com.androidbuts.jsonparsing.utils; 2 | 3 | /** 4 | * Created by Pratik on 12-Dec-15. 5 | */ 6 | public class Keys { 7 | 8 | public static final String KEY_CONTACTS = "contacts"; 9 | public static final String KEY_NAME = "name"; 10 | public static final String KEY_PHONE = "phone"; 11 | public static final String KEY_MOBILE = "mobile"; 12 | public static final String KEY_PROFILE_PIC = "profile_pic"; 13 | public static final String KEY_EMAIL = "email"; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 22 | 23 | 24 | 25 | 29 | 30 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_row_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 21 | 22 | 29 | 30 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratikbutani/JSONParsingUsingOkHTTP/3ad9b97d14b9de6e1845a8fa8d65f2a3a5527c45/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratikbutani/JSONParsingUsingOkHTTP/3ad9b97d14b9de6e1845a8fa8d65f2a3a5527c45/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratikbutani/JSONParsingUsingOkHTTP/3ad9b97d14b9de6e1845a8fa8d65f2a3a5527c45/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratikbutani/JSONParsingUsingOkHTTP/3ad9b97d14b9de6e1845a8fa8d65f2a3a5527c45/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pratikbutani/JSONParsingUsingOkHTTP/3ad9b97d14b9de6e1845a8fa8d65f2a3a5527c45/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | > 2 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | JSON Parsing Demo 3 | Settings 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 14 |