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