Reputation: 538
After doing a lot of research posting this question. Adding Images from json data which contains url's of these images into listview.I have included the following code but don't know exactly which code to implement to load image.
public class MainActivity extends ListActivity {
// url to make request
private static String url = "http://website/?json=get_recent_posts";
// JSON Node names
private static final String TAG_POSTS = "posts";
private static final String TAG_ID = "id";
private static final String TAG_TITLE = "title";
private static final String TAG_DATE = "date";
private static final String TAG_CONTENT = "content";
private static final String TAG_AUTHOR = "author";
private static final String TAG_NAME = "name";
private static final String TAG_IMAGES = "images";
private static final String TAG_THUMBNAIL = "thumbnail";
// contacts JSONArray
JSONArray posts = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
try {
// Getting Array of Contacts
posts = json.getJSONArray(TAG_POSTS);
// looping through All Contacts
for(int i = 0; i < posts.length(); i++){
JSONObject c = posts.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_ID);
String title = c.getString(TAG_TITLE);
String date = c.getString(TAG_DATE);
String content = c.getString(TAG_CONTENT);
// to remove all <P> </p> and <br /> and replace with ""
content = content.replace("<br />", "");
content = content.replace("<p>", "");
content = content.replace("</p>", "");
// Author is agin JSON Object
JSONObject author = c.getJSONObject(TAG_AUTHOR);
String name = author.getString(TAG_NAME);
JSONObject images = c.getJSONObject(TAG_IMAGES);
String thumbnail = images.getString(TAG_THUMBNAIL);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_ID, id);
map.put(TAG_TITLE, title);
map.put( TAG_DATE, date);
map.put( TAG_NAME, name);
map.put( TAG_CONTENT, content);
// adding HashList to ArrayList
contactList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(this, contactList,
R.layout.list_row,
new String[] { TAG_TITLE, TAG_DATE, TAG_NAME, TAG_CONTENT }, new int[] {
R.id.name, R.id.email,R.id.mobile, R.id.content });
setListAdapter(adapter);
// selecting single ListView item
ListView lv = getListView();
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String title = ((TextView) view.findViewById(R.id.name)).getText().toString();
String date = ((TextView) view.findViewById(R.id.email)).getText().toString();
String name = ((TextView) view.findViewById(R.id.mobile)).getText().toString();
String content = ((TextView) view.findViewById(R.id.content)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SampleDesp.class);
in.putExtra(TAG_TITLE, title);
in.putExtra(TAG_DATE, date);
in.putExtra(TAG_NAME, name);
in.putExtra(TAG_CONTENT, content);
startActivity(in);
}
});
}
JSON data format
{ "status": "ok","count": 10,"count_total": 429,"pages": 43,"posts": [ { "id": 2512,"title": "Sansui Eq Sound Processor 2 Mic option in a single unit.","content": "<p>Sansui Eq Sound Processor 2 Mic option in a single unit For sale .<br />\nFor more details contact<br />\n9886673699</p>\n", "date": "2012-12-24 09:39:53",
"author": {"name": "sales" }, "attachments": [{ "images": {"thumbnail": {
"url": "http://site/wp-content/uploads/2012/12/372967-50x37.jpg"
} } }}],.......
Upvotes: 0
Views: 1903
Reputation: 5192
The code to Implement Load image
:
private Bitmap DownloadImage(String URL)
{
// System.out.println("image inside="+URL);
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// System.out.println("image last");
return bitmap;
}
private InputStream OpenHttpConnection(String urlString)
throws IOException
{
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK)
{
in = httpConn.getInputStream();
}
}
catch (Exception ex)
{
throw new IOException("Error connecting");
}
return in;
}
Upvotes: 1