android - Having trouble implementing onClickListener for a custom ListAdapter Listview -
i having trouble implementing onitemclick
listview
. need open new activity on clicking item in listview
, pass title/genre/rating/release year data new activity. know how can pass thumbnail image of clicked item in listview
, display in new activity.
customlistadapter.java
public class customlistadapter extends baseadapter { private activity activity; private layoutinflater inflater; private list<movie> movieitems; imageloader imageloader = appcontroller.getinstance().getimageloader(); public customlistadapter(activity activity, list<movie> movieitems) { this.activity = activity; this.movieitems = movieitems; } @override public int getcount() { return movieitems.size(); } @override public object getitem(int location) { return movieitems.get(location); } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { if (inflater == null) inflater = (layoutinflater) activity .getsystemservice(context.layout_inflater_service); if (convertview == null) convertview = inflater.inflate(r.layout.list_row, null); if (imageloader == null) imageloader = appcontroller.getinstance().getimageloader(); networkimageview thumbnail = (networkimageview) convertview .findviewbyid(r.id.thumbnail); textview title = (textview) convertview.findviewbyid(r.id.title); textview rating = (textview) convertview.findviewbyid(r.id.rating); textview genre = (textview) convertview.findviewbyid(r.id.genre); textview year = (textview) convertview.findviewbyid(r.id.releaseyear); // getting movie data row movie m = movieitems.get(position); // thumbnail image thumbnail.setimageurl(m.getthumbnailurl(), imageloader); // title title.settext(m.gettitle()); // rating rating.settext("rating: " + string.valueof(m.getrating())); // genre string genrestr = ""; (string str : m.getgenre()) { genrestr += str + ", "; } genrestr = genrestr.length() > 0 ? genrestr.substring(0, genrestr.length() - 2) : genrestr; genre.settext(genrestr); // release year year.settext(string.valueof(m.getyear())); return convertview; } }
main2activity.java
public class main2activity extends appcompatactivity { // log tag private static final string tag = main2activity.class.getsimplename(); // movies json url private static final string url = "http://api.androidhive.info/json/movies.json"; private progressdialog pdialog; private list<movie> movielist = new arraylist<movie>(); private listview listview; private customlistadapter adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main2); listview = (listview) findviewbyid(service_list); adapter = new customlistadapter(this, movielist); listview.setadapter(adapter); pdialog = new progressdialog(this); // showing progress dialog before making http request pdialog.setmessage("loading..."); pdialog.show(); // changing action bar color //getactionbar().setbackgrounddrawable( //new colordrawable(color.parsecolor("#1b1b1b"))); // creating volley request obj jsonarrayrequest moviereq = new jsonarrayrequest(url, new response.listener<jsonarray>() { @override public void onresponse(jsonarray response) { log.d(tag, response.tostring()); hidepdialog(); // parsing json (int = 0; < response.length(); i++) { try { jsonobject obj = response.getjsonobject(i); movie movie = new movie(); movie.settitle(obj.getstring("title")); movie.setthumbnailurl(obj.getstring("image")); movie.setrating(((number) obj.get("rating")) .doublevalue()); movie.setyear(obj.getint("releaseyear")); // genre json array jsonarray genrearry = obj.getjsonarray("genre"); arraylist<string> genre = new arraylist<string>(); (int j = 0; j < genrearry.length(); j++) { genre.add((string) genrearry.get(j)); } movie.setgenre(genre); // adding movie movies array movielist.add(movie); } catch (jsonexception e) { e.printstacktrace(); } } // notifying list adapter data changes // renders list view updated data adapter.notifydatasetchanged(); } }, new response.errorlistener() { @override public void onerrorresponse(volleyerror error) { volleylog.d(tag, "error: " + error.getmessage()); hidepdialog(); } }); // adding request request queue appcontroller.getinstance().addtorequestqueue(moviereq); } @override public void ondestroy() { super.ondestroy(); hidepdialog(); } private void hidepdialog() { if (pdialog != null) { pdialog.dismiss(); pdialog = null; } } }
you can send whole object movieitem , position of item click in next activity can extract them this.
listview.setonitemclicklistener(new onitemclicklistener(){ @override public void onitemclick(adapterview<?> p1, view p2, int p3, long p4) { intent=new intent(getbasecontext(),nextactivity.class); intent.putparcelablearraylistextra("key", movielist); intent.putextra("intkey",p3); } });
Comments
Post a Comment