android - json, listadapters and multiple on click activity for listviews -
i using api calls pull out json entry , fill in list view. problem having implementing different listeners inside of list view. list view looks this:
the listview implement onitemclick listener , checkbox listener. till able populate listview , generate onitemclick listener, failed implement checkbox listener. tries able invoke checkbox listener after listview item clicked , 1 of checkboxes(out of several).
the code looks now:
public class allprojects extends sherlocklistactivity{ arraylist<hashmap<string, string>> all_list; progressdialog progressdialog; actionmode mmode; listview list; layout layoutlist; checkbox projectcheckbox; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.projectlist); actionbar bar = getsupportactionbar(); bar.setdisplayshowtitleenabled(false); bar.setdisplayhomeasupenabled(false); bar.setnavigationmode(com.actionbarsherlock.app.actionbar.navigation_mode_list); spinneradapter mspinneradapter = arrayadapter.createfromresource(getapplicationcontext(), r.array.actionbarnavlist, android.r.layout.simple_dropdown_item_1line); onnavigationlistener mnavigationlistner = new onnavigationlistener() { @override public boolean onnavigationitemselected(int itemposition, long itemid) { switch (itemposition) { case 0: // toast.maketext(getapplicationcontext(), "you viewing projects", toast.length_long).show(); break; case 1: intent intent = new intent(allprojects.this, myproject.class); startactivity(intent); finish(); break; default: break; } return false; } }; bar.setlistnavigationcallbacks(mspinneradapter, mnavigationlistner); bar.setselectednavigationitem(0); all_list = new arraylist<hashmap<string, string>>(); asyncprojectlist connection = new asyncprojectlist(); connection.execute(); } private actionmode.callback mactioncallback = new actionmode.callback() { @override public boolean onprepareactionmode(actionmode mode, menu menu) { // todo auto-generated method stub return false; } @override public void ondestroyactionmode(actionmode mode) { // todo auto-generated method stub } @override public boolean oncreateactionmode(actionmode mode, menu menu) { // todo auto-generated method stub menuinflater inflater = mode.getmenuinflater(); inflater.inflate(r.menu.contextual_menu_add_project, menu); return true; } @override public boolean onactionitemclicked(actionmode mode, menuitem item) { // todo auto-generated method stub switch(item.getitemid()){ case r.id.cancelactionmenu: break; case r.id.addtoprojectsmenu: break; default: break; } return false; } }; @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); getsupportactionbar().setsubtitle("press start selection"); } private class asyncprojectlist extends asynctask<void, void, void>{ jsonarray jsar; jsonobject jsob; string project_title, project_sector; @override protected void onpreexecute() { progressdialog = new progressdialog(allprojects.this); progressdialog.setcancelable(false); progressdialog.setmessage("loading..."); progressdialog.setprogressstyle(progressdialog.style_spinner); progressdialog.setprogress(0); progressdialog.show(); } @override protected void doinbackground(void... params) { userfunctions user = new userfunctions(); jsob = user.allprojects(); try { jsar = jsob.getjsonarray("data"); } catch (jsonexception e1) { e1.printstacktrace(); } for(int i=0; i<jsar.length(); i++){ try { jsonobject newobj = jsar.getjsonobject(i); project_title = newobj.getstring("title"); project_sector = newobj.getstring("sector"); hashmap<string, string> single = new hashmap<string, string>(); single.put("title", project_title); single.put("sector", project_sector); all_list.add(single); } catch (jsonexception e) { e.printstacktrace(); } } // log.i("json object", jsar.tostring()); return null; } @override protected void onpostexecute(void result) { listadapter adapter = new simpleadapter(getapplicationcontext(), all_list, r.layout.projectlist_frame, new string[]{"title","sector"}, new int[]{r.id.projecttitle, r.id.projectsector}); setlistadapter(adapter); progressdialog.dismiss(); list = getlistview(); list.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view viewclicked, int position, long id) { intent toindividual = new intent(allprojects.this, individual_project.class); try { toindividual.putextra("nid", jsar.getjsonobject(position).getstring("id")); startactivity(toindividual); } catch (jsonexception e) { e.printstacktrace(); } projectcheckbox = (checkbox)findviewbyid(r.id.checkbox); projectcheckbox.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { // todo auto-generated method stub if(projectcheckbox.ischecked()){ log.i("checked", "checked"); startactionmode(mactioncallback); }else{ log.i("unchecked","unchecked"); startactionmode(mactioncallback).finish(); } } }); } }); } } }