populate android list from mysql error -
i'm new android , i'm trying set info mysql server listview in android. have text , image in list item. works if seek add together text. errors:
06-22 22:54:43.215: e/androidruntime(32644): fatal exception: main 06-22 22:54:43.215: e/androidruntime(32644): java.lang.runtimeexception: unable start activity componentinfo{com.rolab37.lostpet/com.rolab37.lostpet.dashboardactivity}: java.lang.nullpointerexception 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.activitythread.performlaunchactivity(activitythread.java:2295) 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2349) 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.activitythread.access$700(activitythread.java:159) 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.activitythread$h.handlemessage(activitythread.java:1316) 06-22 22:54:43.215: e/androidruntime(32644): @ android.os.handler.dispatchmessage(handler.java:99) 06-22 22:54:43.215: e/androidruntime(32644): @ android.os.looper.loop(looper.java:176) 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.activitythread.main(activitythread.java:5419) 06-22 22:54:43.215: e/androidruntime(32644): @ java.lang.reflect.method.invokenative(native method) 06-22 22:54:43.215: e/androidruntime(32644): @ java.lang.reflect.method.invoke(method.java:525) 06-22 22:54:43.215: e/androidruntime(32644): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1046) 06-22 22:54:43.215: e/androidruntime(32644): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:862) 06-22 22:54:43.215: e/androidruntime(32644): @ dalvik.system.nativestart.main(native method) 06-22 22:54:43.215: e/androidruntime(32644): caused by: java.lang.nullpointerexception 06-22 22:54:43.215: e/androidruntime(32644): @ com.rolab37.lostpet.dashboardactivity.connect(dashboardactivity.java:201) 06-22 22:54:43.215: e/androidruntime(32644): @ com.rolab37.lostpet.dashboardactivity.oncreate(dashboardactivity.java:67) 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.activity.performcreate(activity.java:5372) 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1104) 06-22 22:54:43.215: e/androidruntime(32644): @ android.app.activitythread.performlaunchactivity(activitythread.java:2257) 06-22 22:54:43.215: e/androidruntime(32644): ... 11 more so here code: dashboardactivity.java
package com.example.dashboard; import java.io.bytearrayoutputstream; import java.io.ioexception; import java.io.inputstream; import java.lang.ref.weakreference; import java.util.arraylist; import java.util.list; import java.util.vector; import org.apache.http.httpentity; import org.apache.http.httpresponse; import org.apache.http.httpstatus; import org.apache.http.client.clientprotocolexception; import org.apache.http.client.methods.httpget; import org.apache.http.impl.client.defaulthttpclient; import org.apache.http.util.entityutils; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject; import android.app.activity; import android.content.context; import android.content.intent; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.net.http.androidhttpclient; import android.os.asynctask; import android.os.bundle; import android.os.strictmode; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.webkit.urlutil; import android.widget.arrayadapter; import android.widget.baseadapter; import android.widget.button; import android.widget.imageview; import android.widget.listview; import android.widget.textview; import com.rolab37.lostpet.library.userfunctions; public class dashboardactivity extends activity { userfunctions userfunctions; button btnlogout; textview text; listview listview; private stockadaptor stockadaptor; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); /** * dashboard screen application * */ // check login status in database userfunctions = new userfunctions(); if(userfunctions.isuserloggedin(getapplicationcontext())){ setcontentview(r.layout.dashboard); strictmode.threadpolicy policy = new strictmode.threadpolicy.builder().permitall().build(); strictmode.setthreadpolicy(policy); connect(); btnlogout = (button) findviewbyid(r.id.btnlogout); btnlogout.setonclicklistener(new view.onclicklistener() { public void onclick(view arg0) { // todo auto-generated method stub userfunctions.logoutuser(getapplicationcontext()); intent login = new intent(getapplicationcontext(), loginactivity.class); login.addflags(intent.flag_activity_clear_top); startactivity(login); // closing dashboard screen finish(); } }); }else{ // user not logged in show login screen intent login = new intent(getapplicationcontext(), loginactivity.class); login.addflags(intent.flag_activity_clear_top); startactivity(login); // closing dashboard screen finish(); } } private class stockadaptor extends baseadapter { //the stocks list adaptor class viewholder { textview name; textview price; imageview image; } private layoutinflater layoutinflater; private stockinformation[] stocks = null; //array of stocks private listview stockslistview = null; public stockadaptor(context context) { super(); layoutinflater = layoutinflater.from(context); } public void setstocklist(stockinformation[] stocksinfo) { this.stocks = stocksinfo;// //////////////literally } @override public int getcount() { homecoming stocks.length; } @override public object getitem(int position) { homecoming stocks[position]; } public stockinformation[] getall() { //return array of stocks homecoming stocks; } @override public long getitemid(int position) { homecoming 0; } public view getview(int position, view convertview, viewgroup parent) { viewholder holder; //new holder if (convertview == null) { convertview = layoutinflater.inflate(r.layout.dashboard, null); holder = new viewholder(); // creates new viewholder define above, storing references children holder.name = (textview) convertview.findviewbyid(r.id.name); holder.price = (textview) convertview.findviewbyid(r.id.location); holder.image = (imageview) convertview.findviewbyid(r.id.image); stockslistview = (listview) findviewbyid(android.r.id.list); if (holder.image != null) { if (holder.image.getdrawable() == null) { new imagedownloadertask(holder.image, null) .execute(stocks[position].imageurl); //download image using imageurl } } convertview.settag(holder); } else { stockslistview = (listview) findviewbyid(android.r.id.list); holder = (viewholder) convertview.gettag(); } holder.name.settext(stocks[position].name); holder.price.settext(stocks[position].location); homecoming convertview; } } private void connect() { string data; list<string> r = new arraylist<string>(); arrayadapter<string>adapter=new arrayadapter<string>(getapplicationcontext(), android.r.layout.simple_list_item_1,r); listview list=(listview)findviewbyid(r.id.list); seek { defaulthttpclient client = new defaulthttpclient(); httpget request = new httpget("http://localhost/list.php"); httpresponse response = client.execute(request); httpentity entity=response.getentity(); data=entityutils.tostring(entity); log.e("string", data); seek { jsonarray json=new jsonarray(data); vector<stockinformation> vstocks = new vector<stockinformation>(); log.e("debug", "aici"); (int = 0; < json.length(); i++) { jsonobject obj=json.getjsonobject(i); stockinformation stock = new stockinformation(); stock.name = obj.optstring("name"); stock.location = obj.optstring("location"); stock.imageurl = obj.getstring("imageurl"); log.e("stocklog", stock.name + stock.location + stock.imageurl); vstocks.add(stock); } stockinformation[] stocks = new stockinformation[json.length()]; int stockscount = json.length(); (int n = 0; n < stockscount; n++) { stocks[n] = vstocks.get(n); } stockadaptor.setstocklist(stocks); list.setadapter(stockadaptor); /* for(int i=0;i<json.length(); i++) { jsonobject obj=json.getjsonobject(i); string name=obj.getstring("name"); string year=obj.getstring("year"); string age=obj.getstring("age"); log.e("string", name); r.add(name); r.add(year); r.add(age); list.setadapter(adapter); }*/ } grab (jsonexception e) { // todo auto-generated grab block e.printstacktrace(); } } grab (clientprotocolexception e) { log.d("dashboardactivity", e.getlocalizedmessage()); } grab (ioexception e) { log.d("dashboardactivity", e.getlocalizedmessage()); } } private class imagedownloadertask extends asynctask<string, void, bitmap> { private final weakreference<imageview> imageviewreference; public imagedownloadertask(imageview imageview, view view) { imageviewreference = new weakreference<imageview>(imageview); } @override // actual download method, run in task thread protected bitmap doinbackground(string... params) { // params comes execute() call: params[0] url. homecoming downloadbitmap(params[0]); } @override // 1 time image downloaded, associates imageview protected void onpostexecute(bitmap bitmap) { if (iscancelled()) { bitmap = null; } if (imageviewreference != null) { imageview imageview = imageviewreference.get(); if (imageview != null) { if (bitmap != null) { imageview.setimagebitmap(bitmap); } else { // } } } } bitmap downloadbitmap(string url) { if(urlutil.isvalidurl(url)){ final androidhttpclient client = androidhttpclient.newinstance("android"); final httpget getrequest = new httpget(url); seek { httpresponse response = client.execute(getrequest); final int statuscode = response.getstatusline().getstatuscode(); if (statuscode != httpstatus.sc_ok) { log.w("imagedownloader", "error " + statuscode + " while retrieving bitmap " + url); homecoming null; } final httpentity entity = response.getentity(); if (entity != null) { inputstream inputstream = null; seek { inputstream = entity.getcontent(); seek { byte[] buffer = new byte[8192]; int bytesread; bytearrayoutputstream output = new bytearrayoutputstream(); while ((bytesread = inputstream.read(buffer)) != -1) { output.write(buffer, 0, bytesread); } homecoming bitmapfactory.decodebytearray(output.tobytearray(), 0, output.tobytearray().length); } grab (illegalargumentexception e) { e.printstacktrace(); log.i("iae", "in stocks"); homecoming null; } } { if (inputstream != null) { inputstream.close(); } entity.consumecontent(); } } } grab (exception e) { getrequest.abort(); log.w("imagedownloader", "error while retrieving bitmap " + url); } { if (client != null) { client.close(); } } homecoming null; } homecoming null; } } } stockinformation.java bundle com.example.dashboard;
public class stockinformation { public string name; public string location; public string imageurl; } dashboard.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#3b3b3b"> <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="welcome" android:textsize="40dip" android:gravity="center" android:layout_margintop="20dip"/> <listview android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" > </listview> <button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="logout me" android:textsize="20dip" android:textcolor="#21dbd4" android:textstyle="bold" android:id="@+id/btnlogout" android:layout_margintop="80dip" android:background="@null"/> </linearlayout> and dashboardlist.xml
<?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="wrap_content" android:minheight="50dp" android:orientation="vertical" > <linearlayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <imageview android:id="@+id/image" android:layout_width="70dp" android:layout_height="70dp" /> <textview android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:linespacingextra="3dp" android:paddingleft="5dp" android:paddingtop="5dp" android:text="" /> <textview android:id="@+id/location" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingleft="5dp" android:paddingtop="5dp" android:text="" /> </linearlayout> </linearlayout> and json
[{"name":"nicu","location":"1983","imageurl":"http:\/\/www.fancyicons.com\/free-icons\/103\/flags\/png\/256\/romania_flag_256.png"},{"name":"adina","location":"1987","imageurl":"http:\/\/icons.iconarchive.com\/icons\/custom-icon-design\/flag-3\/256\/united-kingdom-flag-icon.png"}] hope can help
this because stockadaptor in dashboardactivity on line 201 null.
android mysql listitem
No comments:
Post a Comment