package info.jiangpeng.fragment; import android.app.Fragment; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.GridView; import info.jiangpeng.R; import info.jiangpeng.activity.MainActivity; import info.jiangpeng.adapter.ContactsAdapter; import info.jiangpeng.helper.RequestParams; import info.jiangpeng.sign.CustomOAuthConsumer; import info.jiangpeng.sign.OAuthFactory; import info.jiangpeng.task.UserParseTask; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class ContactsFragment extends Fragment { private GridView contactsGridView; private RequestParams requestParams; private ContactsAdapter contactsAdapter; private View contactView; private UserBooksFragment userBooksFragment; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); return inflater.inflate(R.layout.contacts_fragment, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); contactView = getView().findViewById(R.id.contact_view); contactsGridView = (GridView) getView().findViewById(R.id.contact_grid); contactsAdapter = new ContactsAdapter(getActivity()); contactsGridView.setAdapter(contactsAdapter); contactsGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { requestParams.setUserId(String.valueOf(id)); requestParams.setUserName(contactsAdapter.getItem(position).getName()); requestParams.setAccessToken(requestParams.getAccessToken()); requestParams.setAccessTokenSecret(requestParams.getAccessTokenSecret()); requestParams.setUserChanged(true); contactView.setVisibility(View.GONE); // userBooksFragment = (UserBooksFragment) Fragment.instantiate(getActivity(), UserBooksFragment.class.getName()); MainActivity activity = (MainActivity) getActivity(); System.out.println("------------requestParams.getUserId() = " + requestParams.getUserId()); System.out.println("------------requestParams.getUserName() = " + requestParams.getUserName()); activity.setRequestParams(requestParams); activity.showMyBooksTab(); } }); } public void searchContacts() { contactView.setVisibility(View.VISIBLE); System.out.println("-----------------on contact fragment resume: requestParams is " + requestParams); if (requestParams == null){ return; } new SearchContactsTask().execute(); } public void setRequestParams(RequestParams requestParams) { System.out.println("------------set requestParams for contact = " + requestParams); this.requestParams = requestParams; } private class SearchContactsTask extends AsyncTask<Void, Integer, String>{ @Override protected String doInBackground(Void... voids) { CustomOAuthConsumer consumerSignedIn = OAuthFactory.createConsumer(requestParams.getAccessToken(), requestParams.getAccessTokenSecret()); String rawJsonString = ""; try { rawJsonString = consumerSignedIn.executeAfterSignIn("http://api.douban.com/people/" + requestParams.getUserId() + "/contacts?alt=json"); } catch (Exception e) { e.printStackTrace(); } System.out.println("------------contacts rawJsonString = " + rawJsonString); return rawJsonString; } @Override protected void onPostExecute(String s) { try { JSONObject jsonObject = new JSONObject(s); JSONArray entry = jsonObject.getJSONArray("entry"); int length = entry.length(); for (int i = 0; i < length; i++) { new UserParseTask(contactsAdapter).execute(entry.get(i).toString()); } } catch (JSONException e) { e.printStackTrace(); } } } }