how to show all friends names in list view

前端 未结 1 780
情书的邮戳
情书的邮戳 2021-02-06 12:34

I want to show friend list after log in to facebook through my app in a ListView. But my code is not working. I have also used classes like friendsArrayAdapter. I h

相关标签:
1条回答
  • 2021-02-06 13:23

    MainActivity.java

        import java.io.FileNotFoundException;
        import java.io.IOException;
        import java.net.MalformedURLException;
        import java.util.ArrayList;
    
        import org.json.JSONArray;
        import org.json.JSONException;
        import org.json.JSONObject;
    
        import com.facebook.android.AsyncFacebookRunner;
        import com.facebook.android.AsyncFacebookRunner.RequestListener;
        import com.facebook.android.DialogError;
        import com.facebook.android.Facebook;
        import com.facebook.android.FacebookError;
        import com.facebook.android.Facebook.DialogListener;
        import com.facebook.android.Util;
        import android.app.Activity;
        import android.content.Intent;
        import android.content.SharedPreferences;
        import android.os.Bundle;
        import android.util.Log;
        import android.view.View;
        import android.view.View.OnClickListener;
        import android.view.Window;
        import android.view.WindowManager;
        import android.widget.Button;
        import android.widget.ListView;
        import android.widget.Toast;
    
        @SuppressWarnings("deprecation")
        public class MainActivity extends Activity {
    
            // Your Facebook APP ID
            private static String APP_ID = "197574013719352"; // Replace your App ID here
    
            // Instance of Facebook Class
            public static Facebook facebook = null;
            public static AsyncFacebookRunner mAsyncRunner = null;
            String FILENAME = "AndroidSSO_data";
            private SharedPreferences mPrefs;
            String _error;
    
            Button button;
    
            ArrayList<String> friends_list;
            ListView lv;
    
            @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.main);
    
                facebook = new Facebook(APP_ID);
                mAsyncRunner = new AsyncFacebookRunner(facebook);   
                friends_list = new ArrayList<String>();
                button = (Button) findViewById(R.id.button);
                lv = (ListView) findViewById(R.id.list);
    
                button.setOnClickListener(new OnClickListener()
                {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        loginToFacebook();
                    }
    
                });
    
            }
    
            public void loginToFacebook() {
                mPrefs = getPreferences(MODE_PRIVATE);
    
                if (!facebook.isSessionValid()) {
                    facebook.authorize(this, new String[] { "email", "publish_stream" },
                            new DialogListener() {
    
                                @Override
                                public void onCancel() {
                                    // Function to handle cancel event
                                }
    
                                @Override
                                public void onComplete(Bundle values) {
                                    // Function to handle complete event
                                    // Edit Preferences and update facebook acess_token
                                    SharedPreferences.Editor editor = mPrefs.edit();
                                    editor.putString("access_token",
                                            facebook.getAccessToken());
                                    editor.putLong("access_expires",
                                            facebook.getAccessExpires());
                                    editor.commit();     
    
                                    mAsyncRunner.request("me/friends", new FriendsRequestListener());
    
                                    Toast.makeText(getApplicationContext(), "Success ", Toast.LENGTH_LONG).show();
    
                                    button.setText("LogOut");
    
                                }
    
                                @Override
                                public void onError(DialogError error) {
                                    // Function to handle error
    
                                }
    
                                @Override
                                public void onFacebookError(FacebookError fberror) {
                                    // Function to handle Facebook errors
    
                                }
    
                            });
                }
            }
    
            private class FriendsRequestListener implements RequestListener {
                String friendData;
    
                //Method runs when request is complete
                public void onComplete(String response, Object state) {
                    Log.v("", "FriendListRequestONComplete");
                    //Create a copy of the response so i can be read in the run() method.
                    friendData = response; 
                    Log.v("friendData--", ""+friendData);
                    //Create method to run on UI thread
                    MainActivity.this.runOnUiThread(new Runnable() {
                        public void run() {
                            try {
                                //Parse JSON Data
                                JSONObject json;
                                json = Util.parseJson(friendData);
    
                                //Get the JSONArry from our response JSONObject
                                JSONArray friendArray = json.getJSONArray("data");
    
                                Log.v("friendArray--", ""+friendArray);
    
                                for(int i = 0; i< friendArray.length(); i++)
                                {
                                    JSONObject frnd_obj = friendArray.getJSONObject(i);
                                    friends_list.add(frnd_obj.getString("name")+"~~~"+frnd_obj.getString("id"));
                                }
    
      Intent ide = new Intent(MainActivity.this,Next.class);
                                    ide.putStringArrayListExtra("friends", friends_list);
                                    ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                    startActivity(ide);
    
                              //  ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,android.R.id.text1, friends_list);
                             //   lv.setAdapter(adapter);
    
                            } catch (JSONException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (FacebookError e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    });
                }
    
                @Override
                public void onIOException(IOException e, Object state) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onFileNotFoundException(FileNotFoundException e,
                        Object state) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onMalformedURLException(MalformedURLException e,
                        Object state) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onFacebookError(FacebookError e, Object state) {
                    // TODO Auto-generated method stub
    
                }
                }
    
        }
    

    Next.java

        import java.util.ArrayList;
    
        import android.app.Activity;
        import android.content.Intent;
        import android.os.Bundle;
        import android.view.Window;
        import android.view.WindowManager;
        import android.widget.ArrayAdapter;
        import android.widget.ListView;
    
        public class Next extends Activity{
    
            @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.list);
    
                Intent i = getIntent();
    
                ArrayList<String> friends_data = i.getStringArrayListExtra("friends");
    
                ListView lv = (ListView) findViewById(R.id.list);
    
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,android.R.id.text1, friends_data);
                lv.setAdapter(adapter);
    
            }
    
        }
    
    0 讨论(0)
提交回复
热议问题