Android setadapter Null pointer -
i have following fragment
public class tab2 extends fragment { // progress dialog private progressdialog pdialog; // creating json parser object jsonparser jparser = new jsonparser(); arraylist<hashmap<string, string>> contactslist; // url contacts list //private static string url_all_contacts = "http://192.168.100.28/andriod_product_demo/get_all_contacts.php"; // json node names private static final string tag_success = "success"; private static final string tag_contacts = "contacts"; private static final string tag_pid = "pid"; private static final string tag_name = "name"; private static final string tag_type = "type"; listview lv; //..get user id tinydb tinydb objtdb; // contacts jsonarray jsonarray contacts = null; @override public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) { view v = inflater.inflate(r.layout.tab2,container,false); objtdb=new tinydb(getactivity()); // hashmap listview contactslist = new arraylist<hashmap<string, string>>(); // listview //lv = getlistview(); lv = (listview) v.findviewbyid(r.id.list); // loading contacts in background thread new loadallcontacts().execute(); /*// on selecting single product // launching edit contact screen lv.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { // getting values selected listitem string pid = ((textview) view.findviewbyid(r.id.pid)).gettext() .tostring(); // starting new intent intent in = new intent(getactivity().getapplicationcontext(), editproductactivity.class); // sending pid next activity in.putextra(tag_pid, pid); // starting new activity , expecting response startactivityforresult(in, 100); } });*/ return v; } /** * background async task load contact making http request * */ class loadallcontacts 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 contacts. please wait..."); pdialog.setindeterminate(false); pdialog.setcancelable(false); pdialog.show(); } /** * getting contacts url * */ protected string doinbackground(string... args) { // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("tag", "get_contact_list")); params.add(new basicnamevaluepair("user_id", string.valueof(objtdb.getlong(appconfig.usr_log_in_id)))); // getting json string url jsonobject json = jparser.getjsonfromurl(appconfig.url_contacts, params); // check log cat json reponse log.d("all contacts: ", json.tostring()); try { // checking success tag int success = json.getint(tag_success); if (success == 1) { // contacts found // getting array of contacts contacts = json.getjsonarray(tag_contacts); // looping through contacts (int = 0; < contacts.length(); i++) { jsonobject c = contacts.getjsonobject(i); // storing each json item in variable string id = c.getstring(tag_pid); string name = c.getstring(tag_name); string type = c.getstring(tag_type); // creating new hashmap hashmap<string, string> map = new hashmap<string, string>(); // adding each child node hashmap key => value map.put(tag_pid, id); map.put(tag_name, name); map.put(tag_type, type); // adding hashlist arraylist contactslist.add(map); } } /*else { // no contacts found // launch add new product activity intent = new intent(getapplicationcontext(), newproductactivity.class); // closing previous activities i.addflags(intent.flag_activity_clear_top); startactivity(i); }*/ } catch (jsonexception e) { e.printstacktrace(); } return null; } /** * after completing background task dismiss progress dialog * **/ protected void onpostexecute(string file_url) { // dismiss dialog after getting contacts pdialog.dismiss(); // updating ui background thread getactivity().runonuithread(new runnable() { public void run() { /** * updating parsed json data listview * */ listadapter adapter = new simpleadapter( getactivity(), contactslist, r.layout.list_item, new string[] { tag_pid, tag_name,tag_type}, new int[] { r.id.pid, r.id.name ,r.id.type}); // updating listview lv.setadapter(adapter); //setlistadapter(adapter); } }); } }
}
and getting following error (from logcat) on line lv.setadapter(adapter); ,
06-20 09:23:26.996: e/androidruntime(1550): fatal exception: main 06-20 09:23:26.996: e/androidruntime(1550): process: com.example.simplifimed, pid: 1550 06-20 09:23:26.996: e/androidruntime(1550): java.lang.nullpointerexception: attempt invoke virtual method 'void android.widget.listview.setadapter(android.widget.listadapter)' on null object reference 06-20 09:23:26.996: e/androidruntime(1550): @ com.example.simplifimed.tab2$loadallcontacts$1.run(tab2.java:256) 06-20 09:23:26.996: e/androidruntime(1550): @ android.app.activity.runonuithread(activity.java:5293) 06-20 09:23:26.996: e/androidruntime(1550): @ com.example.simplifimed.tab2$loadallcontacts.onpostexecute(tab2.java:245) 06-20 09:23:26.996: e/androidruntime(1550): @ com.example.simplifimed.tab2$loadallcontacts.onpostexecute(tab2.java:1) 06-20 09:23:26.996: e/androidruntime(1550): @ android.os.asynctask.finish(asynctask.java:636) 06-20 09:23:26.996: e/androidruntime(1550): @ android.os.asynctask.access$500(asynctask.java:177) 06-20 09:23:26.996: e/androidruntime(1550): @ android.os.asynctask$internalhandler.handlemessage(asynctask.java:653) 06-20 09:23:26.996: e/androidruntime(1550): @ android.os.handler.dispatchmessage(handler.java:102) 06-20 09:23:26.996: e/androidruntime(1550): @ android.os.looper.loop(looper.java:135) 06-20 09:23:26.996: e/androidruntime(1550): @ android.app.activitythread.main(activitythread.java:5257) 06-20 09:23:26.996: e/androidruntime(1550): @ java.lang.reflect.method.invoke(native method) 06-20 09:23:26.996: e/androidruntime(1550): @ java.lang.reflect.method.invoke(method.java:372) 06-20 09:23:26.996: e/androidruntime(1550): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) 06-20 09:23:26.996: e/androidruntime(1550): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698)
the tab2.xml is,
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <!-- main listview give id value list(@android:id/list) --> <listview android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </linearlayout>
and list_item.xml follows,
<?xml version="1.0" encoding="utf-8"?> <!-- layout individual news entries in list --> <tablelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tablelayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <tablerow android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dip" > <!-- product id (pid) - hidden - used pass other activity --> <textview android:id="@+id/pid" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" /> <!-- name label --> <textview android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingtop="6dip" android:paddingleft="6dip" android:textsize="17dip" android:textstyle="bold" /> <!-- type label --> <textview android:id="@+id/type" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingtop="6dip" android:paddingleft="6dip" android:textsize="17dip" android:textstyle="bold" /> </tablerow> </tablelayout>
hi please try extend fragment replacing listfragment. suc has follows:
public class mylistfragment extends listfragment
in case follows :
public class tab2 extends listfragment
now able listview.
or
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <listview android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </linearlayout>
Comments
Post a Comment