package com.gnod.geekr.ui.activity;
import java.util.ArrayList;
import android.content.Intent;
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.WeiboBaseTool;
import com.gnod.geekr.tool.StringUtils;
import com.gnod.geekr.tool.fetcher.NoticeFetcher;
import com.gnod.geekr.tool.fetcher.StatusFetcher;
import com.gnod.geekr.widget.GeekrPanel;
public class TopicsActivity extends RefreshActivity<StatusModel> {
private TimelineAdapter mStatusAdapter;
private StatusFetcher mStatusFetcher;
private StatusDataHolder mStatusHolder = new StatusDataHolder();
private String mTopics;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void initFetcher() {
mStatusFetcher = new StatusFetcher();
}
@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() {
Intent intent = getIntent();
mTopics = intent.getStringExtra("Topics");
setTitle("话题: " + mTopics );
if(StringUtils.isNullOrEmpty(mTopics)){
finish();
}
}
@Override
public void onItemClicked(View view, int position, long id) {
StatusViewHolder statusView = (StatusViewHolder)view.getTag();
if(statusView == null)
return;
StatusModel item = mStatusHolder.list.get(position);
Intent intent = new Intent(TopicsActivity.this, StatusDetailActivity.class);
intent.putExtra("itemModel", item);
startActivity(intent);
}
@Override
public void fetchDatas(int count, int page) {
mStatusFetcher.fetchTopics(mTopics, 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(int position, View v) {
switch (v.getId()) {
case R.id.sd_btn_fav:
WeiboBaseTool.getInstance().favoriteStatus(
mStatusHolder.list.get(position).ID);
break;
case R.id.sd_btn_copy:
GeekrTool.copyTextToClipboard(
mStatusHolder.list.get(position).content);
break;
case R.id.sd_btn_ret:
LaunchHelper.startRetweetActivity(v.getContext(),
mStatusHolder.list.get(position));
break;
case R.id.sd_btn_cmt:
LaunchHelper.startCommentActivity(v.getContext(),
mStatusHolder.list.get(position));
break;
default:
break;
}
}
};
}