java - Trying to parse json to list view on android but getting error -


i making app fetches json websites , parses json listview on android.

i json using http request make 2 arrays websites t hold websites names , links hold links.i want listview show websites names , on clicking open website in browser.

can please me.tried could. me figure out problem or tell me way thanks.

trying json , parse listview below code:

public class getwebsitelist extends asynctask<string, string, string> {         // creating json parser object          arraylist<hashmap<string, string>> productslist;         string websites[]=new string[10];         string links[]=new string[10];         // url products list         private string url_all_products = "http://androidtest.cu.cc/getwebsites.php";          // json node names         private static final string tag_success = "success";         private static final string tag_websites = "websites";         private static final string tag_sno = "sno";         private static final string tag_name = "name";         private static final string tag_link = "link";         // products jsonarray         jsonarray products = null;         // progress dialog         private progressdialog pdialog;          protected void onpreexecute() {             super.onpreexecute();             pdialog = new progressdialog(mainpage.this);             pdialog.setmessage("loading website list.please wait...");             pdialog.setindeterminate(false);             pdialog.setcancelable(true);             pdialog.show();         }          @override         protected string doinbackground(string... arg0) { // building parameters             list<namevaluepair> params = new arraylist<namevaluepair>();             jsonparser jparser = new jsonparser();             // getting json string url             jsonobject json = jparser.makehttprequest(url_all_products, "get", params);             //arrayadapter adapter = arrayadapter.             // check log cat json reponse             log.d("nitrek products: ", json.tostring());              try {                 // checking success tag                 int success = json.getint(tag_success);                 string suc;                 switch(success)                 {                     case 1:                         suc="true";                         break;                     case 0:                         suc="false";                         break;                     default:                         suc="unkonwn";                         break;                 }                  if (success == 1) {                     // products found                     // getting array of products                     log.d(" nitrek success",suc);                     products = json.getjsonarray(tag_websites);                     // looping through products                     log.d(" nitrek websites", products.tostring());                     (int = 0; < products.length(); i++) {                         jsonobject c = products.getjsonobject(i);                         // storing each json item in variable                         string id = c.getstring(tag_sno);                         string name = c.getstring(tag_name);                         string link= c.getstring(tag_link);                         log.d("nitrek website",id+name+link);                        // websites[i]=new string();                         websites[i]=name;                         links[i]=link;                         log.d("nitrek web",websites[i]+links[i]);                         /* creating new hashmap                         hashmap<string, string> map = new hashmap<string, string>();                         // adding each child node hashmap key => value                        try {                            map.put(tag_sno, id);                            map.put(tag_name, name);                            productslist.add(map);                        }                        catch (exception e)                        {                            e.printstacktrace();                        }                         // adding hashlist arraylist                         */                     }                 } else {                     // no products found                     // launch add new product activity                     toast.maketext(mainpage.this,"no website found", toast.length_long).show();                 }             } catch (jsonexception e) {                 e.printstacktrace();             }              return null;         }          @override         protected void onpostexecute(final string result) {             pdialog.dismiss();              runonuithread(new runnable() {                 public void run() {                     /**                      * updating parsed json data listview                      */                     //listadapter adapter = new simpleadapter(mainpage.this, productslist, r.layout.listitem, new string[]{tag_sno, tag_name},new int[]{r.id.sno, r.id.name});                     // updating listview                     try {                         //arrayadapter<string> adapter = new arrayadapter<string>(mainpage.this, r.layout.listitem, r.id.name, websites);                          final arraylist<string> list = new arraylist<string>();                         (int = 0; < websites.length; ++i) {                             list.add(websites[i]);                         }                         final stablearrayadapter adapter = new stablearrayadapter(mainpage.this, r.layout.listitem, list);                         //arrayadapter<string> ad = new arrayadapter<string>(mainpage.this, r.layout.listitem, websites);                         listview lv = (listview) findviewbyid(r.id.list);                         lv.setadapter(adapter);                         lv.setonitemclicklistener(new adapterview.onitemclicklistener() {                             @override                             public void onitemclick(adapterview<?> parent, view view, int position, long id) {                                 //intent intent = new intent(this, homepage.class);                                 count = 0;                                 string url = links[position];                                 toast.maketext(mainpage.this, "opening: " + url, toast.length_short).show();                                 intent = new intent(intent.action_view, uri.parse(url));                                 //notify_test(url);                                 startactivity(i);                              }                         });                     } catch (exception e) {                         log.d("error list nitrekerror", "below");                         e.printstacktrace();                     }                     toast.maketext(mainpage.this, result, toast.length_long).show();                      int = 0;                     while (i < websites.length && < 3) {                         toast.maketext(mainpage.this, websites[i] + " " + links[i], toast.length_long).show();                         i++;                     }                 }             });         }     }     private class stablearrayadapter extends arrayadapter<string> {          hashmap<string, integer> midmap = new hashmap<string, integer>();          public stablearrayadapter(context context, int textviewresourceid,                                   list<string> objects) {             super(context, textviewresourceid, objects);             (int = 0; < objects.size(); ++i) {                 midmap.put(objects.get(i), i);             }         }          @override         public long getitemid(int position) {             string item = getitem(position);             return midmap.get(item);         }          @override         public boolean hasstableids() {             return true;         }      } 

but getting error , not able figure out why? below logcat:

07-08 00:58:34.245  27826-27826/? e/androidruntime﹕ fatal exception: main     process: nitz.nitrek.myrtoguide, pid: 27826     java.lang.nullpointerexception: attempt invoke virtual method 'java.lang.string java.lang.object.tostring()' on null object reference             @   android.widget.arrayadapter.createviewfromresource(arrayadapter.java)             @ android.widget.arrayadapter.getview(arrayadapter.java)             @ android.widget.abslistview.obtainview(abslistview.java)             @ android.widget.listview.measureheightofchildren(listview.java)             @ android.widget.listview.onmeasure(listview.java)             @ android.view.view.measure(view.java)             @ android.widget.relativelayout.measurechild(relativelayout.java)             @ android.widget.relativelayout.onmeasure(relativelayout.java)             @ android.view.view.measure(view.java)             @ android.view.viewgroup.measurechildwithmargins(viewgroup.java)             @ android.widget.framelayout.onmeasure(framelayout.java)             @ android.view.view.measure(view.java)             @ android.view.viewgroup.measurechildwithmargins(viewgroup.java)             @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java)             @ android.widget.linearlayout.measurevertical(linearlayout.java)             @ android.widget.linearlayout.onmeasure(linearlayout.java)             @ android.view.view.measure(view.java)             @ android.support.v4.widget.drawerlayout.onmeasure(drawerlayout.java:868)             @ android.view.view.measure(view.java)             @ android.view.viewgroup.measurechildwithmargins(viewgroup.java)             @ android.widget.framelayout.onmeasure(framelayout.java)             @ android.support.v7.internal.widget.contentframelayout.onmeasure(contentframelayout.java:124)             @ android.view.view.measure(view.java)             @ android.view.viewgroup.measurechildwithmargins(viewgroup.java)             @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java)             @ android.widget.linearlayout.measurevertical(linearlayout.java)             @ android.widget.linearlayout.onmeasure(linearlayout.java)             @ android.view.view.measure(view.java)             @ android.view.viewgroup.measurechildwithmargins(viewgroup.java)             @ android.widget.framelayout.onmeasure(framelayout.java)             @ android.view.view.measure(view.java)             @ android.view.viewgroup.measurechildwithmargins(viewgroup.java)             @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java)             @ android.widget.linearlayout.measurevertical(linearlayout.java)             @ android.widget.linearlayout.onmeasure(linearlayout.java)             @ android.view.view.measure(view.java)             @ android.view.viewgroup.measurechildwithmargins(viewgroup.java)             @ android.widget.framelayout.onmeasure(framelayout.java)             @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java)             @ android.view.view.measure(view.java)             @ android.view.viewrootimpl.performmeasure(viewrootimpl.java)             @ android.view.viewrootimpl.measurehierarchy(viewrootimpl.java)             @ android.view.viewrootimpl.performtraversals(viewrootimpl.java)             @ android.view.viewrootimpl.dotraversal(viewrootimpl.java)             @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java)             @ android.view.choreographer$callbackrecord.run(choreographer.java)             @ android.view.choreographer.docallbacks(choreographer.java)             @ android.view.choreographer.doframe(choreographer.java)             @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java)             @ android.os.handler.handlecallback(handler.java)             @ android.os.handler.dispatchmessage(handler.java)             @ android.os.looper.loop(looper.java)             @ android.app.activitythread.main(activitythread.java)             @ java.lang.reflect.method.invoke(native method)             @ java.lang.reflect.method.invoke(method.java:372)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java) 07-08 00:58:34.245     780-3917/? e/activitymanager﹕ app crashed! process: nitz.nitrek.myrtoguide 

you had declared websites array of size 10 filling 2-3 entries depending of number of websites got response on passing whole array arrayadapter getting null pointer exception.so got number of websites received in response , dynamically declared array of size only.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -