Reputation: 538
I am using jsonparser to parse data and images obtained from json response. When i include this code to parse image output is D/AndroidRuntime(441): Shutting down VM D/dalvikvm(441): Debugger has detached; object registry had 1 entries
JSONArray attachments = json.getJSONArray(KEY_ATTACHMENTS);
for(int j = 0; j < attachments.length(); j++){
JSONObject d = attachments.getJSONObject(j);
JSONObject images = d.getJSONObject(KEY_IMAGES);
String thumbnail = d.getString(KEY_THUMB_URL);
JSONObject thumnails = d.getJSONObject(KEY_THUMB_URL);
String url = author.getString(KEY_URL);
Am'i going wrong in parsing the content? can any body help Images are displaying along with data in output. my JSON response is
{
"status": "ok",
"posts": [
{
"id": 2498,
"title": "jigsaw lamp imported from thailand",
"content": "<p>Hi. It’s a invitation to have a look at a unique lamp shade called jigsaw lamp from thailand. Available in multi attractive colours.</p>\n",
"date": "2012-12-26 09:48:15",
"author": {
"name": "Tapas123456",
},
"attachments": [
{
"description": "",
"caption": "",
"mime_type": "image/jpeg",
"images": {
"thumbnail": {
"url": "http://site/wp-content/uploads/2012/12/646675-50x47.jpg",
}
}
},...............
following is the code
public class CustomizedListView extends Activity {
JSONArray posts = null;
// All static variables
static final String URL = "http://website";
static final String KEY_POSTS = "posts";
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_DATE = "date";
static final String KEY_CONTENT = "content";
static final String KEY_AUTHOR = "author";
static final String KEY_NAME = "name";
static final String KEY_ATTACHMENTS = "attachments";
static final String KEY_THUMB_URL = "thumbnail";
static final String KEY_IMAGES = "images";
static final String KEY_URL = "url";
ListView list;
LazyAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(URL);
try {
posts = json.getJSONArray(KEY_POSTS);
// looping through all song nodes <song>
for(int i = 0; i < posts.length(); i++){
JSONObject c = posts.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(KEY_ID);
String title = c.getString(KEY_TITLE);
String date = c.getString(KEY_DATE);
String content = c.getString(KEY_CONTENT);
// Phone number is agin JSON Object
JSONObject author = c.getJSONObject(KEY_AUTHOR);
String name = author.getString(KEY_NAME);
JSONArray attachments = json.getJSONArray(KEY_ATTACHMENTS);
for(int j = 0; j < attachments.length(); j++){
JSONObject d = attachments.getJSONObject(j);
JSONObject images = d.getJSONObject(KEY_IMAGES);
String thumbnail = d.getString(KEY_THUMB_URL);
JSONObject thumnails = d.getJSONObject(KEY_THUMB_URL);
String url = author.getString(KEY_URL);
}
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(KEY_ID, id);
map.put(KEY_TITLE, title);
map.put(KEY_DATE, date);
map.put(KEY_NAME, name);
map.put(KEY_CONTENT, content);
// adding HashList to ArrayList
songsList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
list=(ListView)findViewById(R.id.list);
// Getting adapter by passing json data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
}
}
LazyAdapter.java
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView date = (TextView)vi.findViewById(R.id.artist); // artist name
TextView content = (TextView)vi.findViewById(R.id.duration); // duration
TextView name = (TextView)vi.findViewById(R.id.name);
// duration
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
ListView list;
// Setting all values in listview
title.setText(song.get(CustomizedListView.KEY_TITLE));
date.setText(song.get(CustomizedListView.KEY_DATE));
content.setText(song.get(CustomizedListView.KEY_CONTENT));
name.setText(song.get(CustomizedListView.KEY_NAME));
imageLoader.DisplayImage(song.get(CustomizedListView.KEY_URL), thumb_image);
return vi;
}
}
logcat error 12-29 14:42:59.152: D/AndroidRuntime(449): CheckJNI is ON 12-29 14:42:59.273: D/AndroidRuntime(449): --- registering native functions --- 12-29 14:42:59.732: D/AndroidRuntime(449): Shutting down VM 12-29 14:42:59.742: D/dalvikvm(449): Debugger has detached; object registry had 1 entries 12-29 14:42:59.752: I/AndroidRuntime(449): NOTE: attach of thread 'Binder Thread #3' failed 12-29 14:43:00.172: D/AndroidRuntime(457): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 12-29 14:43:00.172: D/AndroidRuntime(457): CheckJNI is ON 12-29 14:43:00.292: D/AndroidRuntime(457): --- registering native functions --- 12-29 14:43:00.772: I/ActivityManager(58): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.androidhive/.CustomizedListView } 12-29 14:43:00.783: D/AndroidRuntime(457): Shutting down VM 12-29 14:43:00.783: D/dalvikvm(457): Debugger has detached; object registry had 1 entries 12-29 14:43:00.792: I/AndroidRuntime(457): NOTE: attach of thread 'Binder Thread #3' failed
Upvotes: 0
Views: 1127
Reputation: 132982
Parse current json as:
JSONObject json=new JSONObject("pass your json string here");
JSONArray arrjson = json.getJSONArray("posts");
for(int j = 0; j < arrjson.length(); j++){
JSONObject jsonimages = attachments.getJSONObject(j);
JSONArray attachmentsimages = jsonimages.getJSONArray("attachments");
for(int i = 0; i < attachmentsimages.length(); i++){
JSONObject imagesjson = attachmentsimages.getJSONObject(i);
JSONObject imagesjsonnew = imagesjson.getJSONObject("images");
JSONObject thumnailsimages = imagesjsonnew.getJSONObject("thumbnail");
String url = thumnailsimages.getString("url");
}
}
Upvotes: 1