package com.gnod.geekr.ui.activity;
import java.util.ArrayList;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ListAdapter;
import com.gnod.geekr.R;
import com.gnod.geekr.app.adapter.TimelineAdapter;
import com.gnod.geekr.holder.StatusDataHolder;
import com.gnod.geekr.holder.StatusViewHolder;
import com.gnod.geekr.model.StatusModel;
import com.gnod.geekr.tool.GeekrTool;
import com.gnod.geekr.tool.LaunchHelper;
import com.gnod.geekr.tool.ToastHelper;
import com.gnod.geekr.tool.fetcher.BaseFetcher;
import com.gnod.geekr.tool.fetcher.BaseFetcher.FetchCompleteListener;
import com.gnod.geekr.tool.fetcher.FavoriteFetcher;
import com.gnod.geekr.tool.fetcher.NoticeFetcher;
import com.gnod.geekr.widget.GeekrPanel;
public class FavoritesActivity extends RefreshActivity<StatusModel> {
private TimelineAdapter mStatusAdapter;
private FavoriteFetcher mFetcher;
private StatusDataHolder mStatusHolder = new StatusDataHolder();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void initFetcher() {
mFetcher = new FavoriteFetcher();
}
@Override
public void initAdapter() {
mStatusHolder.list = new ArrayList<StatusModel>();
mStatusAdapter = new TimelineAdapter(this, mStatusHolder, onPanelItemClicked);
mStatusAdapter.setItemClickListener(mClickListener);
}
@Override
public ListAdapter getAdapter() {
return mStatusAdapter;
}
@Override
public int getListSize() {
return mStatusHolder.list.size();
}
@Override
public void bindView() {
setTitle("收藏");
}
protected void setItemClickListener() {
}
protected void setItemLongClickListener() {
}
@Override
public void fetchDatas(int count, int page) {
mFetcher.fetchFavorities(count, page, getFetchListener());
}
@Override
public void onFetchSucceed(int state, ArrayList<StatusModel> resultList) {
if(resultList.size() != 0){
if(state == NoticeFetcher.FETCH_SUCCEED_NEWS) {
mStatusHolder.list.clear();
}
mStatusHolder.list.addAll(resultList);
mStatusAdapter.notifyDataSetChanged();
}
}
private OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
StatusViewHolder statusView = (StatusViewHolder) v.getTag();
int index = statusView.tag;
if(statusView.togglePanel.isOpen()){
statusView.togglePanel.toggle();
} else {
StatusModel item = mStatusHolder.list.get(index);
LaunchHelper.startDetailActivity(v.getContext(),
item);
}
}
};
private GeekrPanel.OnItemClcikListener onPanelItemClicked = new GeekrPanel.OnItemClcikListener() {
@Override
public void onClick(final int position, View v) {
final StatusModel item = mStatusHolder.list.get(position);
switch (v.getId()) {
case R.id.sd_btn_fav:
mFetcher.destroy(item.ID, new FetchCompleteListener() {
@Override
public void fetchComplete(int state, int errorCode, Object obj) {
if(state == BaseFetcher.FETCH_SUCCEED_NEWS) {
mStatusHolder.list.remove(position);
mStatusAdapter.notifyDataSetChanged();
ToastHelper.show("取消收藏成功", 0);
} else {
ToastHelper.show("取消收藏失败", 2);
}
}
});
break;
case R.id.sd_btn_copy:
GeekrTool.copyTextToClipboard(item.content);
break;
case R.id.sd_btn_ret:
LaunchHelper.startRetweetActivity(
FavoritesActivity.this, item);
break;
case R.id.sd_btn_cmt:
LaunchHelper.startCommentActivity(
FavoritesActivity.this, item);
break;
}
}
};
}