android - Open SlideUpPanel OnClickListener from a drawer NULL Pointer -
i beginner developing geolocation app using google map v2, navigation drawer , slideuppanel androidslidinguppanel library in mapsactivity have public class "myadapter" using custom row. when want use sliding layout (mlayout) adapter class open slide panel onclicklistener, android studio cannot resolve symbol 'layout'.
how can call layout adapter ? sorry bad english
class myadpater extends baseadapter { private context context ; string [] telecentreaurillac; int[] images = {r.drawable.ic_pointeur,r.drawable.ic_pointeur,r.drawable.ic_pointeur,r.drawable.ic_pointeur,r.drawable.ic_pointeur, r.drawable.ic_pointeur,r.drawable.ic_pointeur,r.drawable.ic_pointeur,r.drawable.ic_pointeur,r.drawable.ic_pointeur}; public myadpater (context context) { this.context=context; telecentreaurillac = context.getresources().getstringarray(r.array.telecentreaurillac); } @override public int getcount() { return telecentreaurillac.length; } @override public object getitem(int position) { return telecentreaurillac[position]; } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { view row = null; if(convertview == null) { layoutinflater inflater =(layoutinflater) context.getsystemservice(context.layout_inflater_service); row = inflater.inflate(r.layout.custom_row, parent, false); } else { row = convertview; } // relier avec custom row textview titletextview =(textview) row.findviewbyid(r.id.telecentretexviewdrawer); imageview titleimageview = (imageview) row.findviewbyid(r.id.imagedrawer); //affichage pour chaque position titletextview.settext(telecentreaurillac[position]); titleimageview.setimageresource(images[position]); //layoutinflater inflater = (layoutinflater) getcontext().getsystemservice(context.layout_inflater_service); //view drawer = inflater.inflate(r.layout.activity_maps, null); row.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { log.i("mapsactivity", "clickontv"); // drawerlayout.closedrawers(); mlayout.setanchorpoint(1.0f); // mlayout.setpanelstate(slidinguppanellayout.panelstate.hidden); mlayout.setpanelstate(slidinguppanellayout.panelstate.anchored); } }); return row; } }
in main activity
mlayout = (slidinguppanellayout) findviewbyid(r.id.sliding_layout); //log.i("test test", mlayout.tostring()); mlayout.setpanelslidelistener(new slidinguppanellayout.panelslidelistener() { @override public void onpanelslide(view panel, float slideoffset) { log.i(tag, "onpanelslide, offset " + slideoffset); } @override public void onpanelexpanded(view panel) { log.i(tag, "onpanelexpanded"); } @override public void onpanelcollapsed(view panel) { log.i(tag, "onpanelcollapsed"); } @override public void onpanelanchored(view panel) { log.i(tag, "onpanelanchored"); } @override public void onpanelhidden(view panel) { log.i(tag, "onpanelhidden"); } });
the easy way making static , accessing like:
activity.mlayout.. but correct way sending object reference via constructor argument like:
public myadpater (context context, slidinguppanel mlayout) { this.mlayout = mlayout; this.context=context; telecentreaurillac = context.getresources().getstringarray(r.array.telecentreaurillac); }
and better way handle clicks listview items in activity itself:
listview.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { mlayout.setanchorpoint(1.0f); // mlayout.setpanelstate(slidinguppanellayout.panelstate.hidden); mlayout.setpanelstate(slidinguppanellayout.panelstate.anchored); } });
Comments
Post a Comment