android - friends profile pics not showing with names in list view -
i using 2 activities 1 having login button makes user login facebook , other having listview. after successfull login list view activity opens should display friends names , profile pics in list view. name appearing. can please tell me error in code.
public class loginactivity extends activity { private static final string[] permissions = new string[] { "publish_stream", "publish_checkins", "read_stream", "offline_access", "friends_photos" }; public static final string app_id = "**************"; private facebook facebook = new facebook(app_id); private asyncfacebookrunner masyncrunner = new asyncfacebookrunner(facebook); private progressdialog mprogress; private handler mhandler = new handler(); private progressdialog mspinner; private handler mrunonui = new handler(); string filename = "androidsso_data"; private sharedpreferences mprefs; arraylist<string> friends; string _error; // private string graph_or_fql; private listview list; textview tv; button loginbutton; private uilifecyclehelper uihelper; private contextwrapper uiactivity; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); this.requestwindowfeature(window.feature_no_title); getwindow().setsoftinputmode( windowmanager.layoutparams.soft_input_state_always_hidden); setcontentview(r.layout.login); friends = new arraylist<string>(); tv = (textview) loginactivity.this.findviewbyid(r.id.textview1); loginbutton = (button) findviewbyid(r.id.button_login); loginbutton.setonclicklistener(new view.onclicklistener() { @suppresswarnings("deprecation") @override public void onclick(view v) { if (!facebook.issessionvalid()) { facebook.authorize(loginactivity.this, permissions, new logindialoglistener()); } } }); } public void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); log.d("fb demo app", "onactivityresult(): " + requestcode); facebook.authorizecallback(requestcode, resultcode, data); } private class logindialoglistener implements dialoglistener { public void oncomplete(bundle values) { savecredentials(facebook); getalbumsdata task = new getalbumsdata(); task.execute(); mhandler.post(new runnable() { public void run() { masyncrunner.request("me/friends", new friendsrequestlistener()); } }); } private class friendsrequestlistener implements requestlistener { string frienddata; // method runs when request complete public void oncomplete(string response, object state) { log.v("", "friendlistrequestoncomplete"); // create copy of response can read in run() method. frienddata = response; log.v("frienddata--", "" + frienddata); // create method run on ui thread loginactivity.this.runonuithread(new runnable() { @suppresswarnings("deprecation") public void run() { try { // parse json data jsonobject json; json = util.parsejson(frienddata); // jsonarry our response jsonobject jsonarray friendarray = json.getjsonarray("data"); log.v("friendarray--", "" + friendarray); (int = 0; < friendarray.length(); i++) { jsonobject frnd_obj = friendarray.getjsonobject(i); friends.add(frnd_obj.getstring("name")); } intent ide = new intent(loginactivity.this, frndactivity.class); ide.putstringarraylistextra("friends", friends); startactivity(ide); finish(); } catch (jsonexception e) { // todo auto-generated catch block e.printstacktrace(); } } }); } @override public boolean oncreateoptionsmenu(menu menu) { menuinflater inflater = getmenuinflater(); inflater.inflate(r.menu.main, menu); final menuitem item = menu.finditem(r.id.action_settings); return true; } } , the frnd activity having list view is:
public class frndactivity extends activity { private button continuebutton; textview tv; listview lv; itemadapter adapter1; arraylist<string> friends; private static final string[] permissions = new string[] { "read_friendlists" }; public static final string app_id = "***********"; private facebook facebook = new facebook(app_id); private asyncfacebookrunner masyncrunner = new asyncfacebookrunner(facebook); private handler mhandler; private progressdialog mspinner; string filename = "androidsso_data"; protected static jsonarray jsonarray; protected string graph_or_fql; private sharedpreferences mprefs; private handler mrunonui = new handler(); @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub mhandler = new handler(); super.oncreate(savedinstancestate); this.requestwindowfeature(window.feature_no_title); getwindow().setsoftinputmode( windowmanager.layoutparams.soft_input_state_always_hidden); setcontentview(r.layout.friendlist_screen); if (android.os.build.version.sdk_int > 9) { strictmode.threadpolicy policy = new strictmode.threadpolicy.builder() .permitall().build(); strictmode.setthreadpolicy(policy); } intent = getintent(); friends = i.getstringarraylistextra("friends"); log.v("sizenext--", "" + friends.size()); lv = (listview) findviewbyid(r.id.friendslist); arrayadapter<string> adapter = new arrayadapter<string>(getbasecontext(), r.layout.rowlayout, r.id.rowtext_top, friends); mspinner = new progressdialog(lv.getcontext()); mspinner.requestwindowfeature(window.feature_no_title); mspinner.setmessage("loading..."); tv = (textview) findviewbyid(r.id.friendstext); continuebutton = (button) findviewbyid(r.id.continuebutton); continuebutton.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub intent intent = new intent(frndactivity.this, logoutactivity.class); startactivity(intent); finish(); } }); } class itemadapter extends baseadapter { private final bitmap bitmap = null; final layoutinflater minflater; private class viewholder { public textview name; public textview id; public imageview pro_image; } public itemadapter() { // todo auto-generated constructor stub super(); minflater = (layoutinflater) getsystemservice(context.layout_inflater_service); } // @override public int getcount() { return friends.size(); } // @override public object getitem(int position) { return position; } // @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { view view = convertview; final viewholder holder; if (convertview == null) { view = minflater.inflate(r.layout.rowlayout, parent, false); holder = new viewholder(); holder.name = (textview) view.findviewbyid(r.id.rowtext_top); holder.pro_image = (imageview) view.findviewbyid(r.id.profilepicture); holder.id = (textview) view.findviewbyid(r.id.id); view.settag(holder); } else { holder = (viewholder) view.gettag(); } string[] data = friends.get(position).split("~~~"); holder.name.settext("" + data[0]); holder.id.settext("" + data[1]); holder.pro_image.setimagebitmap(bitmap); string imageurl; bitmap bitmap = null; log.d("", "loading picture"); string graph_api = "https://graph.facebook.com/me/friends?"; string id = null; imageurl = "http://graph.facebook.com/" + id + "/picture?type=small"; try { log.v("imageurl--", "" + imageurl); bitmap = bitmapfactory.decodestream((inputstream) new url(imageurl) .getcontent()); } catch (exception e) { log.d("and:", "loading picture failed"); e.printstacktrace(); } return view; } } } if find error in code please tell.. donot understand how fetch profile pics. please not suggest other code different this. want know mistake in code? xml layouts: rowlayout: <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:orientation="horizontal" > <imageview android:id="@+id/profilepicture" android:layout_width="60dp" android:layout_height="60dp" /> <linearlayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginleft="15dp" android:orientation="vertical" > <textview android:id="@+id/rowtext_top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name" android:textsize="18sp" /> <textview android:id="@+id/id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="id" android:textsize="12sp" android:visibility="invisible" /> </linearlayout> </linearlayout> friendlist_screen has list view , login has 1 button
your getting freind name using below code :
frnd_obj.getstring("name") so use below code getting friend profile picture url:
frnd_obj.getjsonobject("picture").getjsonobject("data").getstring("url")
Comments
Post a Comment