package net.dev123.yibo.service.task;
import java.util.ArrayList;
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.Trend;
import net.dev123.yibo.UserTopicsActivity;
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.TopicListAdapter;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
public class UserTopicTask extends AsyncTask<Void, Void, List<Trend>> {
private static final String TAG = UserTopicTask.class.getSimpleName();
private UserTopicsActivity userTopicsActivity;
private TopicListAdapter topicsAdapter;
private Paging<Trend> paging;
private String message;
public UserTopicTask(Context context) {
this.userTopicsActivity = (UserTopicsActivity) context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
topicsAdapter = userTopicsActivity.getTopicsAdapter();
paging = userTopicsActivity.getPaging();
}
@Override
protected List<Trend> doInBackground(Void... params) {
YiBoApplication yibo = (YiBoApplication) userTopicsActivity.getApplication();
MicroBlog mBlog = GlobalVars.getMicroBlog(yibo.getCurrentAccount());
if (mBlog == null) {
return null;
}
List<Trend> trendList = null;
if (paging.moveToNext()) {
try {
trendList = mBlog.getUserTrends(
yibo.getCurrentAccount().getUser().getId(), paging);
} catch (LibException e) {
if (Constants.DEBUG) Log.d(TAG, e.getMessage(), e);
message = ResourceBook.getStatusCodeValue(e.getExceptionCode(),
userTopicsActivity);
paging.moveToPrevious();
}
}
return trendList;
}
@Override
protected void onPostExecute(List<Trend> trendList) {
super.onPostExecute(trendList);
if (trendList != null && trendList.size() > 0) {
List<String> topicList = new ArrayList<String>(trendList.size());
for(Trend trend : trendList) {
topicList.add(trend.getName());
}
topicsAdapter.addCacheToLast(topicList);
topicsAdapter.notifyDataSetChanged();
} else {
if (StringUtil.isNotEmpty(message)) {
Toast.makeText(userTopicsActivity, message, Toast.LENGTH_LONG).show();
}
}
if (paging.hasNext()) {
userTopicsActivity.showMoreFooter();
} else {
userTopicsActivity.showNoMoreFooter();
}
}
}