package org.aisen.weibo.sina.ui.fragment.profile; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.aisen.android.network.http.Params; import org.aisen.android.network.task.TaskException; import org.aisen.android.ui.fragment.itemview.AHeaderItemViewCreator; import org.aisen.android.ui.fragment.itemview.IITemView; import org.aisen.android.ui.fragment.itemview.IItemViewCreator; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.base.AppContext; import org.aisen.weibo.sina.base.AppSettings; import org.aisen.weibo.sina.sinasdk.SinaSDK; import org.aisen.weibo.sina.sinasdk.bean.StatusContent; import org.aisen.weibo.sina.sinasdk.bean.StatusContents; import org.aisen.weibo.sina.sinasdk.bean.Token; import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser; import org.aisen.weibo.sina.support.utils.AisenUtils; import org.aisen.weibo.sina.ui.fragment.timeline.ATimelineFragment; import org.aisen.weibo.sina.ui.fragment.timeline.ATimelineHeaderView; import org.aisen.weibo.sina.ui.fragment.timeline.TimelineItemView; /** * 用户的微博 * * Created by wangdan on 16/1/12. */ public class ProfileTimelineFragment extends ATimelineFragment { public static ProfileTimelineFragment newInstance(WeiBoUser user) { Bundle args = new Bundle(); args.putSerializable("mUser", user); ProfileTimelineFragment fragment = new ProfileTimelineFragment(); fragment.setArguments(args); return fragment; } private WeiBoUser mUser; @Override public int inflateContentView() { return R.layout.ui_timeline_profile; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mUser = savedInstanceState == null ? (WeiBoUser) getArguments().getSerializable("mUser") : (WeiBoUser) savedInstanceState.getSerializable("mUser"); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("mUser", mUser); } @Override public IItemViewCreator<StatusContent> configItemViewCreator() { return new IItemViewCreator<StatusContent>() { @Override public View newContentView(LayoutInflater inflater, ViewGroup parent, int viewType) { return inflater.inflate(R.layout.item_profile_timeline, parent, false); } @Override public IITemView<StatusContent> newItemView(View convertView, int viewType) { return new TimelineItemView(convertView, ProfileTimelineFragment.this); } }; } @Override protected AHeaderItemViewCreator<StatusContent> configHeaderViewCreator() { return new AHeaderItemViewCreator<StatusContent>() { @Override public int[][] setHeaders() { return new int[][]{ { ATimelineHeaderView.LAYOUT_RES, 100 } }; } @Override public IITemView<StatusContent> newItemView(View convertView, int viewType) { return new ATimelineHeaderView(ProfileTimelineFragment.this, convertView) { @Override protected int getTitleArrRes() { return R.array.user_headers; } @Override protected String[] getTitleFeature() { return ATimelineHeaderView.profileFeatureArr; } }; } }; } @Override public void requestData(RefreshMode mode) { new ProfileTimelineTask(mode).execute(); } class ProfileTimelineTask extends ATimelineTask { public ProfileTimelineTask(RefreshMode mode) { super(mode); } @Override public StatusContents getStatusContents(Params params) throws TaskException { // 不管user_id字段传值什么,都返回登录用户的微博 if (AppContext.getAccount().getUser().getIdstr().equals(mUser.getIdstr())) { params.addParameter("user_id", mUser.getIdstr()); } else { params.addParameter("screen_name", mUser.getScreen_name()); } params.addParameter("count", String.valueOf(AppSettings.getTimelineCount())); Token token = AppContext.getAccount().getAdvancedToken(); if (token == null) token = AppContext.getAccount().getAccessToken(); StatusContents statusContents = SinaSDK.getInstance(token, getTaskCacheMode(this)).statusesUserTimeLine(params); if (statusContents != null && statusContents.getStatuses() != null && statusContents.getStatuses().size() > 0) { for (StatusContent status : statusContents.getStatuses()) status.setUser(mUser); } return statusContents; } } @Override public boolean onToolbarDoubleClick() { if (AisenUtils.checkTabsFragmentCanRequestData(this)) { requestDataDelaySetRefreshing(AppSettings.REQUEST_DATA_DELAY); getRefreshView().scrollToPosition(0); return true; } return false; } }