package net.dev123.yibo.service.task; import java.util.List; import net.dev123.commons.Paging; import net.dev123.commons.util.StringUtil; import net.dev123.exception.LibException; import net.dev123.mblog.MicroBlog; import net.dev123.mblog.entity.Status; import net.dev123.yibo.UserTopicStatusesActivity; import net.dev123.yibo.YiBoApplication; import net.dev123.yibo.common.Constants; import net.dev123.yibo.common.GlobalVars; import net.dev123.yibo.common.ResourceBook; import net.dev123.yibo.service.adapter.UserTopicStatusListAdapter; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; /** * @author Weiping Ye * @version 创建时间:2011-8-24 上午12:34:46 **/ public class UserTopicStatusTask extends AsyncTask<Void, Void, List<Status>> { private static final String TAG = UserTopicStatusTask.class.getSimpleName(); private String message; private UserTopicStatusesActivity userTopicStatusesActivity; private UserTopicStatusListAdapter adapter; private String trendName; private Paging<net.dev123.mblog.entity.Status> paging; public UserTopicStatusTask(Context context, UserTopicStatusListAdapter adapter, String trendName) { if (!(context instanceof UserTopicStatusesActivity) || adapter == null || StringUtil.isEmpty(trendName)) { this.cancel(true); } this.userTopicStatusesActivity = (UserTopicStatusesActivity)context; this.adapter = adapter; this.trendName = trendName; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected List<net.dev123.mblog.entity.Status> doInBackground( Void... params) { YiBoApplication yibo = (YiBoApplication) userTopicStatusesActivity.getApplication(); MicroBlog mBlog = GlobalVars.getMicroBlog(yibo.getCurrentAccount()); if (mBlog == null) { return null; } paging = adapter.getPaging(); paging.setGlobalMax(adapter.getMin()); List<net.dev123.mblog.entity.Status> statusList = null; if (paging.moveToNext()) { try { statusList = mBlog.getUserTrendsStatus(trendName, paging); } catch (LibException e) { if (Constants.DEBUG) Log.d(TAG, e.getMessage(), e); message = ResourceBook.getStatusCodeValue(e.getExceptionCode(), userTopicStatusesActivity); paging.moveToPrevious(); } } return statusList; } @Override protected void onPostExecute(List<net.dev123.mblog.entity.Status> result) { super.onPostExecute(result); if (result != null && result.size() > 0) { adapter.addCacheToDivider(null, result); } else { if (message != null) { Toast.makeText(adapter.getContext(), message, Toast.LENGTH_LONG).show(); } } if (paging.hasNext()) { userTopicStatusesActivity.showMoreFooter(); }else{ userTopicStatusesActivity.showNoMoreFooter(); } } }