java - Android - Displaying Custom ArrayAdapter inside ViewPager -
what wanted populate, listview inside viewpager using fragments since main class extends fragmentactivity
, fragment
not listactivity
or should use listfragment? in logcat points mviewpager.setadapter
public class tabs extends fragmentactivity implements actionbar.tablistener { /** * {@link android.support.v4.view.pageradapter} provide fragments each of * 3 primary sections of app. use {@link android.support.v4.app.fragmentpageradapter} * derivative, keep every loaded fragment in memory. if becomes memory * intensive, may best switch {@link android.support.v4.app.fragmentstatepageradapter}. */ appsectionspageradapter mappsectionspageradapter; /** * {@link viewpager} display 3 primary sections of app, 1 @ * time. */ viewpager mviewpager; @suppresslint("newapi") @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.load_main_groups_activty); db = new databasehandler(this); mcontext = getbasecontext(); //need not getting null pointer exception productslist = new arraylist<hashmap<string, ?>>(); // create adapter return fragment each of 3 primary sections // of app. mappsectionspageradapter = new appsectionspageradapter(getsupportfragmentmanager()); // set action bar. final actionbar actionbar = getactionbar(); // specify home/up button should not enabled, since there no hierarchical // parent. actionbar.sethomebuttonenabled(false); //actionbar.setdisplayshowtitleenabled(false); // specify displaying tabs in action bar. actionbar.setnavigationmode(actionbar.navigation_mode_tabs); // set viewpager, attaching adapter , setting listener when // user swipes between sections. mviewpager = (viewpager) findviewbyid(r.id.pager); mviewpager.setadapter(mappsectionspageradapter); //logacat error: @ line 127 mviewpager.setonpagechangelistener(new viewpager.simpleonpagechangelistener() { @override public void onpageselected(int position) { // when swiping between different app sections, select corresponding tab. // can use actionbar.tab#select() if have reference // tab. actionbar.setselectednavigationitem(position); } }); // each of sections in app, add tab action bar. (int = 0; < mappsectionspageradapter.getcount(); i++) { // create tab text corresponding page title defined adapter. // specify activity object, implements tablistener interface, // listener when tab selected. actionbar.addtab( actionbar.newtab() .settext(mappsectionspageradapter.getpagetitle(i)) .settablistener(this)); } }
/** * fragment launches other parts of demo application. */ public static class launchpadsectionfragment extends listfragment{ @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_section_launchpad, container, false); holder holder = new holder(); view rootview = inflater.inflate(r.layout.load_main_groups_activty, container, false); loadallproducts task = new loadallproducts(); task.execute(); mysimplearrayadapter adapter = new mysimplearrayadapter( mcontext, productslist, r.layout.load_main_groups_listview, foldername); holder.lv= (listview)rootview.findviewbyid(r.id.listview); holder.lv.setadapter(adapter); return rootview; } class holder { listview lv; viewpager pager; } class loadallproducts extends asynctask<string, string, string> { /** * before starting background thread show progress dialog * */ @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(getactivity()); pdialog.setmessage("loading products. please wait..."); pdialog.setindeterminate(false); pdialog.setcancelable(false); pdialog.show(); } /** * getting products url * */ protected string doinbackground(string... args) { // building parameters return null; } /** * after completing background task dismiss progress dialog * **/ protected void onpostexecute(string file_url) { // dismiss dialog after getting products pdialog.dismiss(); // updating ui background thread getactivity().runonuithread(new runnable() { public void run() { /** * updating parsed json data listview * */ mysimplearrayadapter adapter = new mysimplearrayadapter( mcontext, productslist, r.layout.load_main_groups_listview, foldername); setlistadapter(adapter); } }); } } }
load_main_groups_activty , there layout customize view on main layout load_main_groups_listview
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@color/white" > <!-- main listview give id value list(@android:id/list) --> <listview android:id="@+id/listview" android:layout_width="fill_parent" android:layout_alignparenttop="true" android:layout_alignparentbottom="true" android:layout_height="wrap_content" > </listview> </relativelayout>
logcat:
07-18 10:27:34.366: e/androidruntime(13948): fatal exception: main 07-18 10:27:34.366: e/androidruntime(13948): java.lang.runtimeexception: unable start activity componentinfo{com.jinisys.restoplusordering/com.jinisys.restoplusordering.tabs}: java.lang.nullpointerexception 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.activitythread.performlaunchactivity(activitythread.java:2059) 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2084) 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.activitythread.access$600(activitythread.java:130) 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.activitythread$h.handlemessage(activitythread.java:1195) 07-18 10:27:34.366: e/androidruntime(13948): @ android.os.looper.loop(looper.java:137) 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.activitythread.main(activitythread.java:4745) 07-18 10:27:34.366: e/androidruntime(13948): @ java.lang.reflect.method.invokenative(native method) 07-18 10:27:34.366: e/androidruntime(13948): @ java.lang.reflect.method.invoke(method.java:511) 07-18 10:27:34.366: e/androidruntime(13948): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:786) 07-18 10:27:34.366: e/androidruntime(13948): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) 07-18 10:27:34.366: e/androidruntime(13948): @ dalvik.system.nativestart.main(native method) 07-18 10:27:34.366: e/androidruntime(13948): caused by: java.lang.nullpointerexception 07-18 10:27:34.366: e/androidruntime(13948): @ com.jinisys.restoplusordering.tabs.oncreate(tabs.java:121) 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.activity.performcreate(activity.java:5008) 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1079) 07-18 10:27:34.366: e/androidruntime(13948): @ android.app.activitythread.performlaunchactivity(activitythread.java:2023) 07-18 10:27:34.366: e/androidruntime(13948): ... 11 more
the long , short answer never use listactivity , listfragment or variant thereof.
just use regular fragments , activities,
- put listview layout.
- create private class adapter extends arraylistadapter (or baseadapter or whatever).
- assign adapter on onactivitycreated() of fragment
listactivity , listfragment limited , attempt hide , couple should neither hidden nor coupled.
vogella has great tutorial
http://www.vogella.com/tutorials/androidlistview/article.html
no different usage within fragment.
Comments
Post a Comment