package org.aisen.weibo.sina.ui.fragment.timeline;
import java.lang.reflect.Method;
import org.aisen.weibo.sina.support.bean.TimelineGroupBean;
import org.aisen.weibo.sina.support.utils.AppContext;
import org.aisen.weibo.sina.support.utils.AppSettings;
import org.sina.android.SinaSDK;
import org.sina.android.bean.StatusContents;
import android.os.Bundle;
import android.text.TextUtils;
import com.m.common.params.Params;
import com.m.support.task.TaskException;
import com.m.ui.fragment.ABaseFragment;
/**
* 默认分组的微博<br/>
* 使用反射调用接口方法
*
* @author wangdan
*
*/
public class DefGroupTimelineFragment extends ATimelineFragment {
public static ABaseFragment newInstance(TimelineGroupBean groupBean) {
DefGroupTimelineFragment fragment = new DefGroupTimelineFragment();
Bundle args = new Bundle();
args.putSerializable("bean", groupBean);
fragment.setArguments(args);
return fragment;
}
@Override
protected RefreshListType configListType() {
return RefreshListType.androidPulltorefresh;
}
// 2014-8-30 解决因为状态保存而导致的耗时阻塞
@Override
public void saveRefreshListState(Bundle outState) {
// super.saveRefreshListState(outState);
// cleatTaskCount("TimelineTask");
}
@Override
protected void requestData(RefreshMode mode) {
new DefGroupTimelineTask(mode).execute();
}
class DefGroupTimelineTask extends TimelineTask {
public DefGroupTimelineTask(RefreshMode mode) {
super(mode);
}
@Override
protected StatusContents workInBackground(RefreshMode mode, String previousPage, String nextPage, Void... p) throws TaskException {
try {
Params params = new Params();
if (mode == RefreshMode.refresh && !TextUtils.isEmpty(previousPage))
params.addParameter("since_id", previousPage);
if (mode == RefreshMode.update && !TextUtils.isEmpty(nextPage))
params.addParameter("max_id", nextPage);
params.addParameter("count", String.valueOf(AppSettings.getTimelineCount()));
Method method = SinaSDK.class.getMethod(getGroup().getType(), new Class[] { Params.class });
return (StatusContents) method.invoke(SinaSDK.getInstance(AppContext.getToken(), getTaskCacheMode(this)), params);
} catch (Exception e) {
e.printStackTrace();
if (e.getCause() instanceof TaskException)
throw new TaskException(e.getCause().getMessage());
if (e instanceof TaskException)
throw (TaskException) e;
throw new TaskException(TextUtils.isEmpty(e.getMessage()) ? "服务器错误" : e.getMessage());
}
}
}
}