2013-08-13 2 views
1

친구들의 프로필 사진을 이름과 함께 목록보기에 추가하고 싶습니다. 나는 목록보기에서 친구 이름을 제공하는 코드를 사용하고 있습니다. 하지만 나는 그들의 프로필 pictures.i를 표시하는 방법을 모르겠 로그인 버튼을 사용하고 자사의 클릭 이벤트 친구 목록에 열립니다. 누구든지 말해 줄 수 있니? 여기에 내가 사용한 코드가 있습니다친구 목록의 프로필 사진을 목록보기에 표시하는 방법은 무엇입니까?

 public class LoginActivity extends Activity{ 

     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; 

     public static ArrayList<String> friends ; 
     String _error; 

     public byte[] picture; 
     public Bitmap pictureBitmap; 
     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() { 

         @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 void saveCredentials(Facebook facebook) { 
     } 
     public void onFacebookError(FacebookError error) { 
          showToast("Authentication with Facebook failed!"); 
         } 

         public void onError(DialogError error) { 
          showToast("Authentication with Facebook failed!"); 
         } 

         public void onCancel() { 
          showToast("Authentication with Facebook cancelled!"); 
         } 
        } 
       public void showToast(String string) { 
     } 
    public class getAlbumsData { 

          public void execute() { 
     } } 
    private class FriendsRequestListener implements RequestListener { 
         String friendData; 
     //Method runs when request is complete 
         public void onComplete(String response, Object state) { 
          Log.v("", "FriendListRequestONComplete"); 

          friendData = response; 
          Log.v("friendData--", ""+friendData); 
     LoginActivity.this.runOnUiThread(new Runnable() { 
     public void run() { 
      try { 
     //Parse JSON Data 
     JSONObject json; 
      json = Util.parseJson(friendData); 

    JSONArray friendArray = json.getJSONArray("data"); 
    Log.v("friendArray--", ""+friendArray); 
    for(int i = 0; i< 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); 
} 
catch (JSONException e) { 
             // TODO Auto-generated catch block 
             e.printStackTrace(); 
            } catch (FacebookError e) { 
             // TODO Auto-generated catch block 
             e.printStackTrace(); 
            } 
           } 
          }); 
         } 

         } 


      } 
+0

당신이 thaatactivity의 데이터는 다음의 어댑터에 친구 목록을 통과 것을 보여주고 싶은 경우. –

+0

사용자 정의 어댑터 사용 –

+0

그리고 json 적절한 데이터를 얻고 있습니까 ??? 그렇다면 그냥 사용자 지정 어댑터 만들기 및 생성자로 해당 어댑터에 friendlist 전달하고 마지막으로 해당 어댑터를 listview 설정할 ... 알았지? –

답변

3

친구의 프로필 사진을 URL과 함께 표시해야합니다.

당신은 당신의 frnds 프로필 사진을 보여주는 만 URL을 사용해야합니다

당신이 게으른로드과 친구의 프로필 사진을 표시 할 수 있습니다 (이 기능은 페이스 북이 제공됩니다) ..

코드. : :::

package com.facebook.me; 


import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.util.ArrayList; 

import org.json.JSONArray; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 

import com.facebook.android.AsyncFacebookRunner; 
import com.facebook.android.AsyncFacebookRunner.RequestListener; 
import com.facebook.android.FacebookError; 
import com.facebook.lazylist.Friend_List_Lazy_Loading; 

public class Friend_list extends Activity 
{ 
    public static final String DATA = "data"; 
    public static final String NAME = "name"; 
    public static final String FB_ID = "id"; 
    public static final String PICTURE = "picture"; 
    public static final String URL = "url"; 

    Friend_List_Bean friendBean; 
    ArrayList<Friend_List_Bean> aryFriendList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.friend_list); 

     aryFriendList = new ArrayList<Friend_List_Bean>(); 

     getFriendList(); 
    } 

    private void getFriendList() 
    { 
     Bundle param = new Bundle(); 
     param.putString("fields", "name, picture"); 
     AsyncFacebookRunner async = new AsyncFacebookRunner(MainActivity.facebook); 
     async.request("me/friends", param, new RequestListener() 
     { 

      @Override 
      public void onMalformedURLException(MalformedURLException e, Object state) { 
      } 

      @Override 
      public void onIOException(IOException e, Object state) { 
      } 

      @Override 
      public void onFileNotFoundException(FileNotFoundException e, Object state) { 
      } 

      @Override 
      public void onFacebookError(FacebookError e, Object state) { 
      } 

      @Override 
      public void onComplete(String response, Object state) 
      { 
       Log.d("response : ", ""+response); 
       parseContact(response); 
      } 
     },null); 
    } 
    public void parseContact(String response) 
    { 
     try 
     { 
      JSONObject objResponse = new JSONObject(response); 

      JSONArray contact = objResponse.getJSONArray(DATA); 
      Log.d("Total Friends", " : "+contact.length()); 
      for(int i=0;i<contact.length();i++) 
      { 
       friendBean = new Friend_List_Bean(); 
       JSONObject objData = contact.getJSONObject(i); 

       Log.d("", ""+objData.getString(FB_ID)); 
       Log.d("", ""+objData.getString(NAME)); 
       Log.d("", ""+objData.getString(PICTURE)); 

       JSONObject objJsonPicture = objData.getJSONObject(PICTURE); 
       JSONObject objJsonPictureData = objJsonPicture.getJSONObject(DATA); 
       Log.d("", ""+objJsonPictureData.getString(URL)); 

       friendBean.setFbId(objData.getString(FB_ID)); 
       friendBean.setName(objData.getString(NAME)); 
       friendBean.setPictureUrl(objJsonPictureData.getString(URL)); 
       aryFriendList.add(friendBean); 
      } 
      Intent i = new Intent(Friend_list.this, Friend_List_Lazy_Loading.class); 
      i.putExtra("aryFriendList", aryFriendList); 
      startActivity(i); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 
} 

BEAN :::::

package com.facebook.me; 

import java.io.Serializable; 

public class Friend_List_Bean implements Serializable 
{ 
    public String fbId; 
    public String name; 
    public String pictureUrl; 
    public String getFbId() 
    { 
     return fbId; 
    } 
    public void setFbId(String fbId) 
    { 
     this.fbId = fbId; 
    } 
    public String getName() 
    { 
     return name; 
    } 
    public void setName(String name) 
    { 
     this.name = name; 
    } 
    public String getPictureUrl() 
    { 
     return pictureUrl; 
    } 
    public void setPictureUrl(String pictureUrl) 
    { 
     this.pictureUrl = pictureUrl; 
    } 

} 

Friend_List_Lazy_Loading.class :::

package com.facebook.lazylist; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.Button; 
import android.widget.GridView; 
import android.widget.ListView; 
import android.widget.Toast; 

import com.facebook.me.Friend_List_Bean; 
import com.facebook.me.Post_on_Friend; 
import com.facebook.me.R; 

public class Friend_List_Lazy_Loading extends Activity implements OnItemClickListener { 

    ListView list; 
    GridView gv; 
    LazyAdapter adapter; 
    GridViewLazyAdapter gridViewLazyAdapter; 

    ArrayList<Friend_List_Bean> aryFriendList; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

//  aryFriendList = new ArrayList<Friend_List_Bean>(); 
     list=(ListView)findViewById(R.id.list); 

     Intent intent=getIntent(); 
     aryFriendList=(ArrayList<Friend_List_Bean>)intent.getSerializableExtra("aryFriendList"); 

     adapter=new LazyAdapter(this, aryFriendList); 
     gridViewLazyAdapter=new GridViewLazyAdapter(this, aryFriendList); 

     list.setAdapter(adapter); 
     list.setOnItemClickListener(this); 

     gv = (GridView) findViewById(R.id.grid_id); 
     gv.setAdapter(gridViewLazyAdapter); 
     gv.setOnItemClickListener(this);   
     Button b=(Button)findViewById(R.id.button1); 
     b.setOnClickListener(listener); 

     Button btnViewGalary=(Button)findViewById(R.id.btnViewGalary); 
     btnViewGalary.setOnClickListener(listenerBtnViewGalary); 

     Button btnThumbnail=(Button)findViewById(R.id.btnThumbnail); 
     btnThumbnail.setOnClickListener(listenerBtnThumbnail); 
     list.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public void onDestroy() 
    { 
     list.setAdapter(null); 
     super.onDestroy(); 
    } 

    public OnClickListener listener=new OnClickListener(){ 
     @Override 
     public void onClick(View arg0) 
     { 
      adapter.imageLoader.clearCache(); 
      adapter.notifyDataSetChanged(); 
     } 
    }; 

    public OnClickListener listenerBtnViewGalary=new OnClickListener(){ 
     @Override 
     public void onClick(View arg0) 
     { 
      list.setVisibility(View.GONE); 
      gv.setVisibility(View.VISIBLE); 
     } 
    }; 

    public OnClickListener listenerBtnThumbnail=new OnClickListener(){ 
     @Override 
     public void onClick(View arg0) 
     { 


      gv.setVisibility(View.GONE); 
      list.setVisibility(View.VISIBLE); 
     } 
    }; 


    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
    { 
     if(arg1 == list) 
     { 
      Toast.makeText(this, aryFriendList.get(arg2).getFbId(), Toast.LENGTH_SHORT).show(); 
      Intent i = new Intent(Friend_List_Lazy_Loading.this, Post_on_Friend.class); 
      i.putExtra("id", ""+aryFriendList.get(arg2).getFbId()); 
      startActivity(i); 
     } 
     else 
     { 
      Toast.makeText(this, ""+aryFriendList.get(arg2).getFbId(), Toast.LENGTH_SHORT).show(); 
      Intent i = new Intent(Friend_List_Lazy_Loading.this, Post_on_Friend.class); 
      i.putExtra("id", aryFriendList.get(arg2).getFbId()); 
      startActivity(i); 
     } 

    } 
} 
+0

안녕하세요 ... 답변을 찾았습니까? – MDroid

+0

아니 그것은 나를 위해 작동하지 않습니다 .. 위의 코드에서 친구 그림을 가져 오는 방법을 말해 줄 수 있습니까? – Nidhi

+0

무엇이 오류입니까? – MDroid

관련 문제