the following shows error:
nullpointerexception: cannot start activity component(a.b.youtubeactivity)
please check out. passing single videoid of stuck nullpointerexception. following videoadapter
:
public class videoadapter extends baseadapter implements youtubeplayer.oninitializedlistener { public static final string api_key = "xxxx-pcd82qk8"; public static final string video_id = "7upbjkeiv_y"; context context; layoutinflater inflater; jsonarray jarray = null; arraylist<youtubeitem> list; private youtubeplayer youtubeplayer; private youtubeplayerview youtubeplayerview; public videoadapter(activity context, jsonarray jarray) { // todo auto-generated constructor stub parseresponse(jarray); } private void parseresponse(jsonarray jarray) { if (jarray != null && jarray.length() > 0) { string date; string title; string link; jsonobject jsonobject; list = new arraylist<youtubeitem>(); (int = 0; < jarray.length(); i++) { try { jsonobject = jarray.getjsonobject(i); date = jsonobject.getstring("date"); title = jsonobject.getstring("title"); link = jsonobject.getstring("link"); if (date != null && title != null && link != null) { list.add(new youtubeitem(date, title, link)); } } catch (jsonexception e) { e.printstacktrace(); } } } string[] date = new string[jarray.length()]; string[] title = new string[jarray.length()]; string[] link = new string[jarray.length()]; } @override public view getview(int position, view convertview, viewgroup parent) { // todo auto-generated method stub log.i("adapter 1", ""); view rowview = convertview; if (convertview == null) { layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); rowview = inflater.inflate(r.layout.youtube_view, parent, false); } log.i("adapter 3", ""); youtubeplayerview = (youtubeplayerview) rowview .findviewbyid(r.id.youtubeplayerview); log.i("adapter 4", ""); youtubeplayerview.initialize(api_key, this); log.i("adapter 5", ""); textview d = (textview) rowview.findviewbyid(r.id.textview1); log.i("adapter 6", ""); textview t = (textview) rowview.findviewbyid(r.id.textview2); log.i("adapter 7", ""); textview l = (textview) rowview.findviewbyid(r.id.textview3); log.i("adapter 8", ""); d.settext(list.get(position).getdate()); log.i("adapter 9", ""); t.settext(list.get(position).gettitle()); log.i("adapter 10", ""); l.settext(list.get(position).getlink()); log.i("adapter 11", ""); return rowview; } @override public int getcount() { return list.size(); } @override public object getitem(int arg0) { // todo auto-generated method stub return null; } @override public long getitemid(int i) { // todo auto-generated method stub return i; } private class youtubeitem { private string date; private string title; private string link; private youtubeitem(string date, string title, string link) { this.date = date; this.title = title; this.link = link; } public string getdate() { return date; } public void setdate(string date) { this.date = date; } public string gettitle() { return title; } public void settitle(string title) { this.title = title; } public string getlink() { return link; } public void setlink(string link) { this.link = link; } } @override public void oninitializationfailure(provider arg0, youtubeinitializationresult arg1) { // todo auto-generated method stub } @override public void oninitializationsuccess(provider provider, youtubeplayer player, boolean wasrestored) { // todo auto-generated method stub youtubeplayer = player; if (!wasrestored) { player.cuevideo(video_id); } } }
replace adapter
one
public class videoadapter extends baseadapter { context context; layoutinflater inflater; jsonarray jarray = null; arraylist<youtubeitem> list; public videoadapter(youtubeactivity youtubeactivity, int activityyoutubeapi, jsonarray jarray) { // todo auto-generated constructor stub parseresponse(jarray); } private void parseresponse(jsonarray jarray) { if (jarray != null && jarray.length() > 0) { string date; string title; string link; jsonobject jsonobject; list = new arraylist<>(); (int = 0; < jarray.length(); i++) { try { jsonobject = jarray.getjsonobject(i); date = jsonobject.getstring("date"); title = jsonobject.getstring("title"); link = jsonobject.getstring("link"); if (date != null && title != null && link != null) { list.add(new youtubeitem(date, title, link)); } } catch (jsonexception e) { e.printstacktrace(); } } } string[] date = new string[jarray.length()]; string[] title = new string[jarray.length()]; string[] link = new string[jarray.length()]; } @override public view getview(int position, view convertview, viewgroup parent) { // todo auto-generated method stub layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view rowview = inflater.inflate(r.layout.youtube_view, parent, false); youtubeplayerview = (youtubeplayerview) rowview.findviewbyid(r.id.youtubeplayerview); textview d = (textview) rowview.findviewbyid(r.id.textview1); textview t = (textview) rowview.findviewbyid(r.id.textview2); textview l = (textview) rowview.findviewbyid(r.id.textview3); d.settext(list.get(position).getdate()); t.settext(list.get(position).gettitle()); l.settext(list.get(position).getlink()); return rowview; } @override public int getcount() { return list.size(); } @override public object getitem(int arg0) { // todo auto-generated method stub return null; } @override public long getitemid(int i) { // todo auto-generated method stub return i; } private class youtubeitem { private string date; private string title; private string link; private youtubeitem(string date, string title, string link) { this.date = date; this.title = title; this.link = link; } public string getdate() { return date; } public void setdate(string date) { this.date = date; } public string gettitle() { return title; } public void settitle(string title) { this.title = title; } public string getlink() { return link; } public void setlink(string link) { this.link = link; } } }
instead of creating 3 different arrays, created object called youtubeitem
. more readable , easier manipulate, avoid problems if have lost 1 attribute of of 3 arrays , make parsing individual process (invalid object not affect whole process)
let me know if have more questions