Android仿人人客户端(v5(6)

    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentRight="true"

        android:layout_centerVertical="true"

        android:layout_marginRight="8dip"

        android:src="@drawable/v5_0_1_profile_to_friend_list_img" />



    <View

        android:layout_width="fill_parent"

        android:layout_height="1dip"

        android:layout_below="@+id/tv_friends_count"

        android:background="@drawable/v5_0_1_profile_header_divider" />

</RelativeLayout>



<TextView

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:paddingBottom="10dip"

    android:paddingLeft="15dip"

    android:paddingTop="10dp"

    android:text="基本信息"

    android:textColor="#FF333333"

    android:textSize="13sp" />



<View

    android:layout_width="fill_parent"

    android:layout_height="1.5dip"

    android:background="@drawable/v5_0_1_profile_header_divider" />



<TextView

    android:id="@+id/tv_renren_id"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:paddingBottom="10dip"

    android:paddingLeft="20dip"

    android:paddingTop="10dp"

    android:textColor="#80333333"

    android:textSize="16sp" />



<View

    android:layout_width="fill_parent"

    android:layout_height="1dip"

    android:background="@drawable/v5_0_1_profile_header_divider" />



<TextView

    android:id="@+id/tv_gender"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:paddingBottom="10dip"

    android:paddingLeft="20dip"

    android:paddingTop="10dp"

    android:textColor="#80333333"

    android:textSize="16sp" />



<View

    android:layout_width="fill_parent"

    android:layout_height="1dip"

    android:background="@drawable/v5_0_1_profile_header_divider" />



<TextView

    android:id="@+id/tv_birth"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:paddingBottom="10dip"

    android:paddingLeft="20dip"

    android:paddingTop="10dp"

    android:textColor="#80333333"

    android:textSize="16sp" />



<View

    android:layout_width="fill_parent"

    android:layout_height="1dip"

    android:background="@drawable/v5_0_1_profile_header_divider" />



<TextView

    android:id="@+id/tv_hometown"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:paddingBottom="10dip"

    android:paddingLeft="20dip"

    android:paddingTop="10dp"

    android:textColor="#80333333"

    android:textSize="16sp" />



<View

    android:layout_width="fill_parent"

    android:layout_height="1dip"

    android:background="@drawable/v5_0_1_profile_header_divider" />



<TextView

    android:id="@+id/tv_network"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:paddingBottom="10dip"

    android:paddingLeft="20dip"

    android:paddingTop="10dp"

    android:textColor="#80333333"

    android:textSize="16sp" />

      2、将的基本信息资料显示组件,添加到ListVew的 FooterView。代码如下:



    mBasicInfoView = (LinearLayout) mInflater.inflate(R.layout.personal_homepage_user_basic, null);

    mBasicInfoView.setVisibility(View.GONE);

    mListView.addFooterView(mBasicInfoView);

      3、获取 基本信息资料显示的各个组件,代码如下:



    tvRenrenId = (TextView) mBasicInfoView.findViewById(R.id.tv_renren_id);

    tvGender = (TextView) mBasicInfoView.findViewById(R.id.tv_gender);

    tvBirth = (TextView) mBasicInfoView.findViewById(R.id.tv_birth);

    tvHometown = (TextView) mBasicInfoView.findViewById(R.id.tv_hometown);

    tvNetwork = (TextView) mBasicInfoView.findViewById(R.id.tv_network);

       4、修改 获取用户个人主页信息的网络请求方法,代码如下:



/**

 * 获取用户个人主页的信息

 */

public void getProfileInfo() {

    String accessToken = mAuthTokenManager.getAccessToken();

    LogUtil.e(TAG, "accessToken = " + accessToken);



    Map<String, String> parameter = new HashMap<String, String>();

    parameter.put("v", "1.0"); // API的版本号,固定值为1.0 

    parameter.put("access_token", accessToken); // OAuth2.0验证授权后获得的token。

    parameter.put("format", "JSON"); // 返回值的格式。请指定为JSON或者XML

    parameter.put("call_id", "1.0"); // 请求队列号



    parameter.put("method", "users.getProfileInfo");

    parameter.put("uid", uid + ""); // 个人主页用户的Id 

    parameter.put("fields", "base_info,status,friends_count"); // 需要获取的信息的字段列表,各个字段用逗号隔开。

    AsyncHttpsPost asyncHttpsPost = new AsyncHttpsPost(Constant.API_SERVER_URL, parameter, new ParseCallback() {



        @Override

        public Object parse(String json) throws JSONException {

            LogUtil.i(TAG, "json = " + json);

            final JSONObject jsonObject = new JSONObject(json);



            mHandler.post(new Runnable() {



                @Override

                public void run() {

                    String name = jsonObject.optString("name");

                    LogUtil.i(TAG, "name = " + name);



                    String headurl = jsonObject.optString("headurl");

                    LogUtil.i(TAG, "headurl = " + headurl);



                    int star = jsonObject.optInt("star");

                    LogUtil.i(TAG, "star = " + star);



                    JSONObject jsonStatus = jsonObject.optJSONObject("status");

                    String status = jsonStatus.optString("content");

                    LogUtil.i(TAG, "status = " + status);



                    tvName.setText(name);

                    tvStatusContent.setText(status);



                    if (star == 1) {

                        ivStar.setVisibility(View.VISIBLE);

                    }



                    // 加载用户图像

                    /*ImageInfo imgInfo = new ImageInfo(ivIconView, headurl);

                    new ImageLoader(PersonalHomepageActivity.this).displayImage(imgInfo);*/



                    int friends_count = jsonObject.optInt("friends_count");

                    LogUtil.i(TAG, "friends_count = " + friends_count);

                    tvFriendsCount.setText(friends_count + "个好友");

                    

                    int uid = jsonObject.optInt("uid");

                    LogUtil.i(TAG, "uid = " + uid);

                    

                    String network_name = jsonObject.optString("network_name");

                    LogUtil.i(TAG, "network_name = " + network_name);

                    

                    JSONObject jsonBaseInfo = jsonObject.optJSONObject("base_info");

                    JSONObject jsonBirth = jsonBaseInfo.optJSONObject("birth");

                    JSONObject jsonHometown = jsonBaseInfo.optJSONObject("hometown");

                    

                    int gender = jsonBaseInfo.optInt("gender");

                    LogUtil.i(TAG, "gender = " + gender);

                    

                    String birth_month = jsonBirth.optString("birth_month");

                    LogUtil.i(TAG, "birth_month = " + birth_month);

                    

                    String birth_day = jsonBirth.optString("birth_day");

                    LogUtil.i(TAG, "birth_day = " + birth_day);

                    

                    String birth_year = jsonBirth.optString("birth_year");

                    LogUtil.i(TAG, "birth_year = " + birth_year);

                    

                    String province = jsonHometown.optString("province");

                    LogUtil.i(TAG, "province = " + province);

                    

                    String city = jsonHometown.optString("city");

                    LogUtil.i(TAG, "city = " + city);

                    

                    String sexString = "男";

                    if(gender == 0){

                        sexString = "女";

                    }

                    

                    tvRenrenId.setText("人人ID:" + uid);

                    tvGender.setText("性别:" + sexString);

                    tvBirth.setText("生日:" + birth_year + "年" + birth_month + "月" + birth_day + "日");

                    tvHometown.setText("家乡:" + province + " " + city);

                    tvNetwork.setText("网络:" + network_name);

                    

                }

            });



            return null;

        }

    }, new ResultCallback() {



        @Override

        public void onSuccess(final Object obj) {

            /* {

                  "uid":221659942,

                  "status":{"content":"我才知道草莓翻转,是这个意思(偷笑) 转自谭静:明天最后一门考试,结束后,就真的迎来暑假啦~~哇卡卡卡~~~下学期也终于木有课了~~~(twg)(大笑)(ys)(流口水)","time":"2013-07-02 14:37:01"},

                  "star":1,

                  "network_name":"西北大学",

                  "headurl":"http://hdn.xnimg.cn/photos/hdn421/20130614/1350/tiny_cm9Q_ec73000461fa113e.jpg",

                  "name":"谭静",

                  "base_info":{"birth":{"birth_month":3,"birth_day":21,"birth_year":"1987"},"hometown":{"province":"河北","city":"唐山市"},"gender":0}

               }*/

        }



        @Override

        public void onFail(int errorCode) {

            LogUtil.i(TAG, "freshNewsList errorCode = " + errorCode);



        }

    });



    mDefaultThreadPool.execute(asyncHttpsPost);

    mAsyncRequests.add(asyncHttpsPost);

}

       5、在顶部下拉菜单Item点击事件处理器( public void onItemClick(AdapterView<?> parent, View view, int position, long id) { })中,添加相应的处理。代码如下:



            else if(PERSONAL_HOMEPAGE_TYPE_DATA.equals(fresh_news_type))

            { 

                // 资料

                tvType.setText("好友信息");

                mBasicInfoView.setVisibility(View.VISIBLE);

                

                page = 1;

                mFreshNewsList.clear();

                mListView.setPullLoadEnable(false);

                mListView.setPullRefreshEnable(false);

                mFreshNewsAdapter.notifyDataSetChanged();

            } else {

                mBasicInfoView.setVisibility(View.GONE);

                

                page = 1;

                mFreshNewsList.clear();



                getFreshNews();

            }

        6、运行效果图如下:



![](https://img-blog.csdn.net/20130708231631328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5kcm9pZF9scw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)  

  

三、个人(好友)主页界面到目前为止,完整的代码如下:



package com.everyone.android.ui;

import java.text.SimpleDateFormat;

import java.util.HashMap;

import java.util.LinkedList;

import java.util.Map;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.text.TextUtils;

import android.view.LayoutInflater;

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.FrameLayout.LayoutParams;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.PopupWindow;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

import com.everyone.android.R;

import com.everyone.android.api.NetworkBaseActivity;

import com.everyone.android.bitmap.ImageLoader;

import com.everyone.android.callback.ParseCallback;

import com.everyone.android.callback.ResultCallback;

import com.everyone.android.entity.FreshNews;

import com.everyone.android.entity.ImageInfo;

import com.everyone.android.net.AsyncBaseRequest;

import com.everyone.android.net.AsyncHttpsPost;

import com.everyone.android.ui.freshnews.FreshNewsAdapter;

import com.everyone.android.ui.freshnews.FreshNewsPopupAdapter;

import com.everyone.android.utils.Constant;

import com.everyone.android.utils.LogUtil;

import com.everyone.android.widget.TopMenuNavbar;

import com.everyone.android.widget.XListView;

import com.everyone.android.widget.XListView.IXListViewListener;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

/**

  • 功能描述:个人主页(当前登录用户的个人主页或者好友的个人主页)

  • @author android_ls

*/

public class PersonalHomepageActivity extends NetworkBaseActivity implements IXListViewListener, OnClickListener {

/**

 * LOG打印标签

 */

private static final String TAG = PersonalHomepageActivity.class.getSimpleName();



private TopMenuNavbar topMenuNavbar;



private XListView mListView;



private FreshNewsAdapter mFreshNewsAdapter;



/**

 * 新鲜事信息集合

 */

private LinkedList<FreshNews> mFreshNewsList = new LinkedList<FreshNews>();



/**

 * 用户信息唯一标识

 */

private int uid;



/**

 * 每一页记录数,默认值为30,最大50 

 */

private int pageCount = 30;



/**

 * 当前获取第几页,默认值为1

 */

private int page = 1;



private LayoutInflater mInflater;



// 用户图像

private ImageView ivIconView;



// 用户名

private TextView tvName;



// 表示该用户是否为星级用户 1表示该用户是星级用户,0表示否

private ImageView ivStar;



// 用户状态信息

private TextView tvStatusContent;



// 是否为VIP用户

private Button btnVip;



/**

 * 显示当前过滤的信息所属的类型

 */

private TextView tvType;



/**

 * 指定信息类型的总数

 */

private TextView tvTypeCount;



/**

 * 发表的新鲜事,默认请求所有类型的新鲜事

 */

private static final String FRESH_NEWS_TYPE_ALL = "10,11,20,21,22,23,30,31,32,33,34,35,36";



/**

 * 照片(相册)

 */

private static final String FRESH_NEWS_TYPE_PHOTO = "30,31";



/**

 * 状态

 */

private static final String FRESH_NEWS_TYPE_STATUS = "10,11";



/**

 * 日志

 */

private static final String FRESH_NEWS_TYPE_BLOG = "20,22";



/**

 * 分享的新鲜事

 */

private static final String FRESH_NEWS_TYPE_SHARE = "21,23,32,33,36";



/**

 * 最近来访

 */

private static final String PERSONAL_HOMEPAGE_TYPE_LATELY = "1";



/**

 * 资料

 */

private static final String PERSONAL_HOMEPAGE_TYPE_DATA = "2";



/**

 * 新鲜事类型数组

 */

private String[] freshNewsTypes = { 

        PERSONAL_HOMEPAGE_TYPE_LATELY,

        FRESH_NEWS_TYPE_ALL, 

        PERSONAL_HOMEPAGE_TYPE_DATA,

        FRESH_NEWS_TYPE_PHOTO,

        FRESH_NEWS_TYPE_STATUS,

        FRESH_NEWS_TYPE_BLOG,

        FRESH_NEWS_TYPE_SHARE};



/**

 * 新鲜事类型,默认为当前所支持的全部类型

 */

private String fresh_news_type = FRESH_NEWS_TYPE_ALL;



private PopupWindow mPopupWindow;



/**

 * 顶部下拉列表

 */

private ListView mPopupListView;



/**

 * 顶部下拉列表数据适配器

 */

private FreshNewsPopupAdapter mPopupAdapter;



/**

 * 顶部下拉列表的操作提示文本数组

 */

private String[] mTexts;



/**

 * 顶部下拉列表的操作指示图标Id数组

 */

private int[] mIcons = { 

        R.drawable.v5_0_1_profile_popupwindow_type_visitor_background,

        R.drawable.v5_0_1_profile_popupwindow_type_minifeed_background,

        R.drawable.v5_0_1_profile_popupwindow_type_info_background,

        R.drawable.v5_0_1_profile_popupwindow_type_album_background,

        R.drawable.v5_0_1_profile_popupwindow_type_status_background,

        R.drawable.v5_0_1_profile_popupwindow_type_blog_background,

        R.drawable.v5_0_1_profile_popupwindow_type_share_background};



private LinearLayout mBasicInfoView;

private TextView tvRenrenId;

private TextView tvGender;

private TextView tvBirth;

private TextView tvHometown;

private TextView tvNetwork;



private RelativeLayout rlFriends;

private TextView tvFriendsCount;



@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);



    setupPopupWindow();

}



@Override

protected int getLayoutId() {

    return R.layout.personal_homepage;

}



private void setupPopupWindow() {

    View view = mInflater.inflate(R.layout.fresh_news_popupwindow, null);

    mPopupWindow = new PopupWindow(view, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, true);

    mPopupWindow.setBackgroundDrawable(new BitmapDrawable());

    mPopupWindow.setAnimationStyle(R.style.fresh_news_popup_animation);



    mPopupListView = (ListView) view.findViewById(R.id.popup_listview);

    mTexts = this.getResources().getStringArray(R.array.personal_homepage_filter_list);

    mPopupAdapter = new FreshNewsPopupAdapter(this, mIcons, mTexts);

    mPopupListView.setAdapter(mPopupAdapter);

    

    // 设置默认选中新鲜事项

    fresh_news_type = freshNewsTypes[1];

    mPopupAdapter.setPosition(1);

    mPopupAdapter.notifyDataSetChanged();

    topMenuNavbar.tvTitle.setText(mTexts[1]);

    

    // 设置顶部下拉菜单的Item事件处理

    mPopupListView.setOnItemClickListener(new OnItemClickListener() {



        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            mPopupWindow.dismiss();



            // 当前选择的项与之前的一样,则不做处理。

            if (mPopupAdapter.getPosition() == position) {

                return;

            }



            // 新鲜事过滤事件处理

            fresh_news_type = freshNewsTypes[position];



            LogUtil.i(TAG, "onItemClick position = " + position);

            LogUtil.i(TAG, "onItemClick fresh_news_type = " + fresh_news_type);



            mPopupAdapter.setPosition(position);

            mPopupAdapter.notifyDataSetChanged();

            

            topMenuNavbar.tvTitle.setText(mTexts[position]);

            tvType.setText(mTexts[position]);

            

            if(PERSONAL_HOMEPAGE_TYPE_LATELY.equals(fresh_news_type))

            {

                // 最近来访

                Toast.makeText(PersonalHomepageActivity.this.getApplicationContext(), "抱歉,您选择的项官方API暂时未提供如何获取相应的数据!", Toast.LENGTH_LONG).show();

            } 

            else if(PERSONAL_HOMEPAGE_TYPE_DATA.equals(fresh_news_type))

            { 

                // 资料

                tvType.setText("好友信息");

                mBasicInfoView.setVisibility(View.VISIBLE);

                

                page = 1;

                mFreshNewsList.clear();

                mListView.setPullLoadEnable(false);

                mListView.setPullRefreshEnable(false);

                mFreshNewsAdapter.notifyDataSetChanged();

            } else {

                mBasicInfoView.setVisibility(View.GONE);

                

                page = 1;

                mFreshNewsList.clear();



                getFreshNews();

            }

        }

    });

}



@Override

protected void setupViews() {

    topMenuNavbar = (TopMenuNavbar) this.findViewById(R.id.rl_top_menu_navbar);

    topMenuNavbar.tvRightOperationName.setVisibility(View.GONE);

    topMenuNavbar.ivRightLine.setVisibility(View.GONE);



    // 将顶部左侧的menu图标换成back图标

    LinearLayout llBackMenu = topMenuNavbar.llShowMenu;

    ImageView ivBack = (ImageView) llBackMenu.findViewById(R.id.iv_back);

    ivBack.setImageResource(R.drawable.v5_0_1_flipper_head_back);



    // 将顶部右侧的刷新按钮换成下拉菜单图标

    LinearLayout llDownOperation = topMenuNavbar.mLlRefresh;

    ImageView ivOperation = (ImageView) llDownOperation.findViewById(R.id.iv_refresh);

    ivOperation.setImageResource(R.drawable.v5_0_1_flipper_head_menu);



    llBackMenu.setOnClickListener(this);

    llDownOperation.setOnClickListener(this);

    topMenuNavbar.mLlDownList.setOnClickListener(this);



    mListView = (XListView) this.findViewById(R.id.listview);

    mListView.setPullLoadEnable(false);

    mListView.setPullRefreshEnable(false);

    mListView.setXListViewListener(this);



    // HeadView组件

    mInflater = LayoutInflater.from(this.getContext());

    LinearLayout mHeadView = (LinearLayout) mInflater.inflate(R.layout.personal_homepage_head, null);

    mListView.addHeaderView(mHeadView);



    // 用户基本信息组件

    mBasicInfoView = (LinearLayout) mInflater.inflate(R.layout.personal_homepage_user_basic, null);

    mBasicInfoView.setVisibility(View.GONE);

    mListView.addFooterView(mBasicInfoView);

    

    mFreshNewsAdapter = new FreshNewsAdapter(this, mFreshNewsList);

    mListView.setAdapter(mFreshNewsAdapter);



    tvName = (TextView) mHeadView.findViewById(R.id.tv_name);

    ivIconView = (ImageView) mHeadView.findViewById(R.id.iv_icon);

    ivStar = (ImageView) mHeadView.findViewById(R.id.iv_star);

    tvStatusContent = (TextView) mHeadView.findViewById(R.id.tv_status_content);

    btnVip = (Button) mHeadView.findViewById(R.id.btn_vip);

    tvType = (TextView) mHeadView.findViewById(R.id.tv_type);

    tvTypeCount = (TextView) mHeadView.findViewById(R.id.tv_type_count);

    

    tvRenrenId = (TextView) mBasicInfoView.findViewById(R.id.tv_renren_id);

    tvGender = (TextView) mBasicInfoView.findViewById(R.id.tv_gender);

    tvBirth = (TextView) mBasicInfoView.findViewById(R.id.tv_birth);

    tvHometown = (TextView) mBasicInfoView.findViewById(R.id.tv_hometown);

    tvNetwork = (TextView) mBasicInfoView.findViewById(R.id.tv_network);

    

    // 好友的数量

    rlFriends = (RelativeLayout) mBasicInfoView.findViewById(R.id.rl_friends);

    tvFriendsCount = (TextView) mBasicInfoView.findViewById(R.id.tv_friends_count);

    rlFriends.setOnClickListener(this);

}



@Override

protected void initialized() {

    // TODO Auto-generated method stub

    uid = this.getIntent().getIntExtra("actor_id", -1);

    LogUtil.i(TAG, "uid = " + uid);



    getProfileInfo();

    getUserImage();

    getFreshNews();

}



@Override

public void onClick(View v) {

    // TODO Auto-generated method stub



    switch (v.getId()) {

    case R.id.ll_back:

        onBackPressed();

        break;

    case R.id.ll_down_list:

        if (mPopupWindow != null) {

            mPopupWindow.showAsDropDown(topMenuNavbar);

        }

        break;

    case R.id.rl_friends:

        // 切换到好友列表界面

        

        break; 

    default:

        break;

    }

}



// 下拉刷新

@Override

public void onRefresh() {

    page = 1;

    getFreshNews();

}



// 加载更多

@Override

public void onLoadMore() {

    page++;

    getFreshNews();

}



/**

 * 获取用户个人主页的信息

 */

public void getProfileInfo() {

    String accessToken = mAuthTokenManager.getAccessToken();

    LogUtil.e(TAG, "accessToken = " + accessToken);



    Map<String, String> parameter = new HashMap<String, String>();

    parameter.put("v", "1.0"); // API的版本号,固定值为1.0 

    parameter.put("access_token", accessToken); // OAuth2.0验证授权后获得的token。

    parameter.put("format", "JSON"); // 返回值的格式。请指定为JSON或者XML

    parameter.put("call_id", "1.0"); // 请求队列号



    parameter.put("method", "users.getProfileInfo");

    parameter.put("uid", uid + ""); // 个人主页用户的Id 

    parameter.put("fields", "base_info,status,friends_count"); // 需要获取的信息的字段列表,各个字段用逗号隔开。

    AsyncHttpsPost asyncHttpsPost = new AsyncHttpsPost(Constant.API_SERVER_URL, parameter, new ParseCallback() {



        @Override

        public Object parse(String json) throws JSONException {

            LogUtil.i(TAG, "getProfileInfo() json = " + json);

            final JSONObject jsonObject = new JSONObject(json);



            mHandler.post(new Runnable() {



                @Override

                public void run() {

                    String name = jsonObject.optString("name");

                    LogUtil.i(TAG, "name = " + name);



                    String headurl = jsonObject.optString("headurl");

                    LogUtil.i(TAG, "headurl = " + headurl);



                    int star = jsonObject.optInt("star");

                    LogUtil.i(TAG, "star = " + star);



                    JSONObject jsonStatus = jsonObject.optJSONObject("status");

                    String status = jsonStatus.optString("content");

                    LogUtil.i(TAG, "status = " + status);



                    tvName.setText(name);

                    tvStatusContent.setText(status);



                    if (star == 1) {

                        ivStar.setVisibility(View.VISIBLE);

                    }



                    // 加载用户图像

                    /*ImageInfo imgInfo = new ImageInfo(ivIconView, headurl);

                    new ImageLoader(PersonalHomepageActivity.this).displayImage(imgInfo);*/



                    int friends_count = jsonObject.optInt("friends_count");

                    LogUtil.i(TAG, "friends_count = " + friends_count);

                    tvFriendsCount.setText(friends_count + "个好友");

                    

                    int uid = jsonObject.optInt("uid");

                    LogUtil.i(TAG, "uid = " + uid);

                    

                    String network_name = jsonObject.optString("network_name");

                    LogUtil.i(TAG, "network_name = " + network_name);

                    

                    JSONObject jsonBaseInfo = jsonObject.optJSONObject("base_info");

                    JSONObject jsonBirth = jsonBaseInfo.optJSONObject("birth");

                    JSONObject jsonHometown = jsonBaseInfo.optJSONObject("hometown");

                    

                    int gender = jsonBaseInfo.optInt("gender");
如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

我们搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

img

我们在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

t(friends_count + “个好友”);

                    int uid = jsonObject.optInt("uid");

                    LogUtil.i(TAG, "uid = " + uid);

                    

                    String network_name = jsonObject.optString("network_name");

                    LogUtil.i(TAG, "network_name = " + network_name);

                    

                    JSONObject jsonBaseInfo = jsonObject.optJSONObject("base_info");

                    JSONObject jsonBirth = jsonBaseInfo.optJSONObject("birth");

                    JSONObject jsonHometown = jsonBaseInfo.optJSONObject("hometown");

                    

                    int gender = jsonBaseInfo.optInt("gender");
如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

我们搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

[外链图片转存中…(img-hpvUpg6q-1714361130543)]

我们在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值