android - Using an adapter in a fragment -
i trying use gridview
in fragment
, using adapter
populate buttons. code is:
inside mainactivity:
public static class miscfragment extends fragment { public static final string arg_section_number = "section_number"; public miscfragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.misc_fragment, container, false); gridview gridview = (gridview) rootview.findviewbyid(r.id.gridview); gridview.setadapter(new miscadapter(this.getactivity())); return rootview; } }
my adapter class:
public class miscadapter extends baseadapter { private context mcontext; public miscadapter(context c){ mcontext = c; } @override public int getcount() { return mbuttons.length; } @override public object getitem(int position) { return null; } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { button mybutton; if(convertview == null){ mybutton = new button(mcontext); mybutton.setlayoutparams(new gridview.layoutparams(100,55)); mybutton.setpadding(8,8,8,8); } else{ mybutton = (button) convertview; } mybutton.settext(mbuttons[position]); mybutton.setid(position); return null; } private string[] mbuttons = { "button1", "button2", "button3", "button4", "button5", "button6", "button7", "button8", "button9", "button10" }; }
i believe error at: gridview.setadapter(new miscadapter(this.getactivity()));
i think need pass context
in there i'm not sure if how supposed or if fragments
use context
. right throwing null pointer exception.
stack trace:
05-09 18:29:19.541: e/androidruntime(525): fatal exception: main 05-09 18:29:19.541: e/androidruntime(525): java.lang.nullpointerexception 05-09 18:29:19.541: e/androidruntime(525): @ android.widget.gridview.onmeasure(gridview.java:1028) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.view.measure(view.java:12723) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:4698) 05-09 18:29:19.541: e/androidruntime(525): @ android.widget.framelayout.onmeasure(framelayout.java:293) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.view.measure(view.java:12723) 05-09 18:29:19.541: e/androidruntime(525): @ android.support.v4.view.viewpager.onmeasure(viewpager.java:1389) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.view.measure(view.java:12723) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:4698) 05-09 18:29:19.541: e/androidruntime(525): @ android.widget.framelayout.onmeasure(framelayout.java:293) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.view.measure(view.java:12723) 05-09 18:29:19.541: e/androidruntime(525): @ android.widget.linearlayout.measurevertical(linearlayout.java:812) 05-09 18:29:19.541: e/androidruntime(525): @ android.widget.linearlayout.onmeasure(linearlayout.java:553) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.view.measure(view.java:12723) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:4698) 05-09 18:29:19.541: e/androidruntime(525): @ android.widget.framelayout.onmeasure(framelayout.java:293) 05-09 18:29:19.541: e/androidruntime(525): @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java:2092) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.view.measure(view.java:12723) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1064) 05-09 18:29:19.541: e/androidruntime(525): @ android.view.viewrootimpl.handlemessage(viewrootimpl.java:2442) 05-09 18:29:19.541: e/androidruntime(525): @ android.os.handler.dispatchmessage(handler.java:99) 05-09 18:29:19.541: e/androidruntime(525): @ android.os.looper.loop(looper.java:137) 05-09 18:29:19.541: e/androidruntime(525): @ android.app.activitythread.main(activitythread.java:4424) 05-09 18:29:19.541: e/androidruntime(525): @ java.lang.reflect.method.invokenative(native method) 05-09 18:29:19.541: e/androidruntime(525): @ java.lang.reflect.method.invoke(method.java:511) 05-09 18:29:19.541: e/androidruntime(525): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) 05-09 18:29:19.541: e/androidruntime(525): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) 05-09 18:29:19.541: e/androidruntime(525): @ dalvik.system.nativestart.main(native method)
currently not assigning created view convertview
if convertview null
.change getview
method as:
@override public view getview(int position, view convertview, viewgroup parent) { button mybutton; if(convertview == null){ mybutton = new button(mcontext); mybutton.setlayoutparams(new gridview.layoutparams(100,55)); mybutton.setpadding(8,8,8,8); convertview=mybutton; //>>> assign mybutton convertview } else{ mybutton = (button) convertview; } .... return convertview; /// return view here }
Comments
Post a Comment