java - list view in fragments null pointer exception -
i trying setup swipe refresh in fragment, fetches objects parse. every time, seem null pointer exception on setadapter , list view. although both of them correctly initialized not null.
my recentsadapter:
package com.astuetz.viewpager.extensions.sample; import android.content.context; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.textview; import java.util.arraylist; import java.util.hashmap; public class recentsadapter extends baseadapter { layoutinflater inflater; context context; arraylist<hashmap<string,string>> items = null; public recentsadapter(context context,arraylist<hashmap<string,string>> items) { super(); this.context = context; this.items = items; inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service); } @override public int getcount() { return items.size(); } @override public object getitem(int position) { return items.get(position); } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { view v = convertview; myholder holder = null; if(v == null) { v = inflater.inflate(r.layout.recents_list_item,parent,false); holder = new myholder(v); v.settag(holder); } else { holder = (myholder) v.gettag(); } holder.title.settext(items.get(position).get("title")); holder.author.settext(items.get(position).get("author")); holder.dept.settext(items.get(position).get("dept")); holder.price.settext(items.get(position).get("price")); // holder.place.settext(items.get(position).get("place")); return v; } class myholder { textview dept,title,author,price,place; public myholder(view view) { title = (textview) view.findviewbyid(r.id.book_title); dept = (textview)view.findviewbyid(r.id.dept_name); author = (textview) view.findviewbyid(r.id.author_name); price = (textview)view.findviewbyid(r.id.price_list); // place = (textview)view.findviewbyid(r.id.place_list); } } }
my recent_card.xml defines list view , swipe refresh:
<?xml version="1.0" encoding="utf-8"?> <framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.swiperefreshlayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.cardview android:id="@+id/recents_card" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="8dp" card_view:cardbackgroundcolor="@android:color/white" card_view:cardcornerradius="8dp" android:padding="8dp"> <listview android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recents_list" android:divider="@color/dividercolor" android:dividerheight="1dp"/> </android.support.v7.widget.cardview> </android.support.v4.widget.swiperefreshlayout> </framelayout>
and recentscardfragment.java implements them:
/* * copyright (c) 2013 andreas stuetz <andreas.stuetz@gmail.com> * * licensed under apache license, version 2.0 (the "license"); * may not use file except in compliance license. * may obtain copy of license @ * * http://www.apache.org/licenses/license-2.0 * * unless required applicable law or agreed in writing, software * distributed under license distributed on "as is" basis, * without warranties or conditions of kind, either express or implied. * see license specific language governing permissions , * limitations under license. */ package com.astuetz.viewpager.extensions.sample; import android.app.alertdialog; import android.app.progressdialog; import android.content.context; import android.net.connectivitymanager; import android.net.networkinfo; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.view.viewcompat; import android.support.v4.widget.swiperefreshlayout; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.adapter; import android.widget.listview; import android.widget.toast; import com.parse.findcallback; import com.parse.getcallback; import com.parse.parse; import com.parse.parseexception; import com.parse.parseobject; import com.parse.parsequery; import java.util.arraylist; import java.util.hashmap; import java.util.list; public class recentscardfragment extends fragment implements swiperefreshlayout.onrefreshlistener { listview recentslist = (listview)getactivity().findviewbyid(r.id.recents_list); private swiperefreshlayout refreshbooks; arraylist<hashmap<string,string>> items = new arraylist<>(); //private progressdialog progress; public static recentscardfragment newinstance() { recentscardfragment f = new recentscardfragment(); return f; } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.recents_card,container,false); viewcompat.setelevation(rootview,50); refreshbooks = (swiperefreshlayout) rootview.findviewbyid(r.id.container); refreshbooks.setonrefreshlistener(this); getbooks(); recentsadapter adapter = new recentsadapter(getactivity().getapplicationcontext(), items); recentslist.setadapter(adapter); return rootview; } private arraylist<hashmap<string,string>> getbooks(){ final parsequery<parseobject> query = parsequery.getquery("posted"); query.orderbydescending("createdat"); query.findinbackground(new findcallback<parseobject>() { @override public void done(list<parseobject> parseobjects, parseexception e) { if (e == null){ log.w("parse","inside getbooks()"); (parseobject book : parseobjects) { hashmap<string, string> test = new hashmap<>(); string dept = book.getstring("department"); string title = book.getstring("title"); string author = book.getstring("author"); number price_num = book.getnumber("price"); string price = string.valueof(price_num); string place = book.getstring("place"); string desp = book.getstring("description"); test.put("dept", dept); test.put("title", title); test.put("author", author); test.put("price", price); test.put("place", place); test.put("description", desp); items.add(test); } } else { log.d("books", "error: " + e.getmessage()); } } }); return items; } @override public void onrefresh(){ refreshbooks.setrefreshing(true); updatebooks(); } private void updatebooks(){ toast.maketext(getactivity(),"refresh", toast.length_short).show(); items.addall(getbooks()); refreshbooks.setrefreshing(false); } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); } }
here logcat:
06-14 02:44:52.485 2373-2373/com.astuetz.viewpager.extensions.sample i/process﹕ sending signal. pid: 2373 sig: 9 06-14 02:58:26.624 2502-2524/com.astuetz.viewpager.extensions.sample d/openglrenderer﹕ render dirty regions requested: true 06-14 02:58:26.644 2502-2502/com.astuetz.viewpager.extensions.sample d/﹕ hostconnection::get() new host connection established 0xabb86710, tid 2502 06-14 02:58:27.720 2502-2502/com.astuetz.viewpager.extensions.sample d/atlas﹕ validating map... 06-14 02:58:28.692 2502-2502/com.astuetz.viewpager.extensions.sample i/choreographer﹕ skipped 57 frames! application may doing work on main thread. 06-14 02:58:28.716 2502-2502/com.astuetz.viewpager.extensions.sample d/androidruntime﹕ shutting down vm 06-14 02:58:28.720 2502-2502/com.astuetz.viewpager.extensions.sample e/androidruntime﹕ fatal exception: main process: com.astuetz.viewpager.extensions.sample, pid: 2502 java.lang.nullpointerexception: attempt invoke virtual method 'android.view.view android.support.v4.app.fragmentactivity.findviewbyid(int)' on null object reference @ com.astuetz.viewpager.extensions.sample.recentscardfragment.<init>(recentscardfragment.java:54) @ com.astuetz.viewpager.extensions.sample.recentscardfragment.newinstance(recentscardfragment.java:68) @ com.astuetz.viewpager.extensions.sample.mainactivity$mypageradapter.getitem(mainactivity.java:133) @ android.support.v4.app.fragmentpageradapter.instantiateitem(fragmentpageradapter.java:97) @ android.support.v4.view.viewpager.addnewitem(viewpager.java:837) @ android.support.v4.view.viewpager.populate(viewpager.java:987) @ android.support.v4.view.viewpager.populate(viewpager.java:919) @ android.support.v4.view.viewpager.onmeasure(viewpager.java:1441) @ android.view.view.measure(view.java:17430) @ android.widget.linearlayout.measurevertical(linearlayout.java:875) @ android.widget.linearlayout.onmeasure(linearlayout.java:613) @ android.view.view.measure(view.java:17430) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5463) @ android.widget.framelayout.onmeasure(framelayout.java:430) @ android.view.view.measure(view.java:17430) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5463) @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1436) @ android.widget.linearlayout.measurevertical(linearlayout.java:722) @ android.widget.linearlayout.onmeasure(linearlayout.java:613) @ android.view.view.measure(view.java:17430) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5463) @ android.widget.framelayout.onmeasure(framelayout.java:430) @ android.view.view.measure(view.java:17430) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5463) @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1436) @ android.widget.linearlayout.measurevertical(linearlayout.java:722) @ android.widget.linearlayout.onmeasure(linearlayout.java:613) @ android.view.view.measure(view.java:17430) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5463) @ android.widget.framelayout.onmeasure(framelayout.java:430) @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java:2560) @ android.view.view.measure(view.java:17430) @ android.view.viewrootimpl.performmeasure(viewrootimpl.java:2001) @ android.view.viewrootimpl.measurehierarchy(viewrootimpl.java:1166) @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1372) @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:1054) @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:5779) @ android.view.choreographer$callbackrecord.run(choreographer.java:767) @ android.view.choreographer.docallbacks(choreographer.java:580) @ android.view.choreographer.doframe(choreographer.java:550) @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:753) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:135) @ android.app.activitythread.main(activitythread.java:5221) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:899) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:694) 06-14 02:58:32.992 2502-2502/com.astuetz.viewpager.extensions.sample i/process﹕ sending signal. pid: 2502 sig: 9
i keep on getting null pointer exceptions list view recents list, or @ line, recentslist.ssetadapter(adapter).
although, there several answered questions regarding same topic, in unable solve mine using them.
please me out! in advance!
your recent_list
null , referencing outside oncreateview
inside recentscardfragment
, why nullpointerexception
happenning. move recent_list
declaration oncreateview
method, this:
public class recentscardfragment extends fragment implements swiperefreshlayout.onrefreshlistener { listview recentslist; private swiperefreshlayout refreshbooks; arraylist<hashmap<string,string>> items = new arraylist<>(); //private progressdialog progress; public static recentscardfragment newinstance() { recentscardfragment f = new recentscardfragment(); return f; } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.recents_card,container,false); recentslist = (listview)rootview.findviewbyid(r.id.recents_list); viewcompat.setelevation(rootview,50); refreshbooks = (swiperefreshlayout) rootview.findviewbyid(r.id.container); refreshbooks.setonrefreshlistener(this); getbooks(); recentsadapter adapter = new recentsadapter(getactivity().getapplicationcontext(), items); recentslist.setadapter(adapter); return rootview; }
Comments
Post a Comment