package com.todayinfo.ui.activity;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.jinghua.todayinformation.R;
import com.squareup.picasso.Picasso;
import com.todayinfo.model.ArticleItem;
import com.todayinfo.model.BlogItem;
import com.todayinfo.model.PhonePhotoItem;
import com.todayinfo.ui.component.CircleImageView;
import com.todayinfo.ui.component.ErrorHintView;
import com.todayinfo.utils.DateUtils;
/**
* 我的收藏界面
*
* @author zhou.ni 2015年3月16日
*/
public class MyCollectionsActivity extends SuperActivity {
private ErrorHintView mErrorHintView;
private ListView mListView;
private List<Object> mList = new ArrayList<Object>();
private CollectionAdapter adapter;
public static int VIEW_LIST = 1;
public static int VIEW_LOADING = 2;
public static int VIEW_NODATA = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_collection);
getWindow().setBackgroundDrawable(null);
initView();
}
@Override
protected void onResume() {
super.onResume();
List<Object> list = mUserController.getCollectionInfo();
if ( list==null || list.size()==0 ){
showLoading(VIEW_NODATA);
} else {
showLoading(VIEW_LIST);
mList.clear();
mList.addAll(list);
adapter = new CollectionAdapter();
mListView.setAdapter(adapter);
}
}
/**
* 初始化控件
*/
private void initView() {
RelativeLayout headView = (RelativeLayout) this.findViewById(R.id.head);
RelativeLayout leftBack = (RelativeLayout) headView.findViewById(R.id.back_left);
TextView title = (TextView) headView.findViewById(R.id.head_title);
title.setText("我的收藏");
leftBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
mErrorHintView = (ErrorHintView) this.findViewById(R.id.hintView);
mListView = (ListView) this.findViewById(R.id.list);
showLoading(VIEW_LOADING);
List<Object> list = mUserController.getCollectionInfo();
if ( list==null || list.size()==0 ){
showLoading(VIEW_NODATA);
} else {
showLoading(VIEW_LIST);
mList.clear();
mList.addAll(list);
adapter = new CollectionAdapter();
mListView.setAdapter(adapter);
}
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Object obj = mList.get(position);
if ( obj instanceof ArticleItem ) {
ArticleItem techItem = ( ArticleItem )obj;
Intent intent = new Intent(mContext, PhoneTechDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("ArticleItem", techItem);
intent.putExtras(bundle);
mContext.startActivity(intent);
} else if ( obj instanceof PhonePhotoItem ) {
PhonePhotoItem photoItem = ( PhonePhotoItem ) obj;
Intent intent = new Intent(mContext, PhonePhotoDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("PhonePhotoItem", photoItem);
intent.putExtras(bundle);
mContext.startActivity(intent);
} else {
BlogItem blogItem = (BlogItem) obj;
Intent intent = new Intent(mContext, BolgDetailActivity.class);
Bundle info = new Bundle();
info.putSerializable("item", blogItem);
intent.putExtras(info);
mContext.startActivity(intent);
}
}
});
}
/**
* 显示动态加载的view
*
* @param i
*/
private void showLoading(int i){
mErrorHintView.setVisibility(View.GONE);
mListView.setVisibility(View.GONE);
switch(i){
case 1:
mErrorHintView.hideLoading();
mListView.setVisibility(View.VISIBLE);
break;
case 2:
mErrorHintView.loadingData();
break;
case 3:
mErrorHintView.hideLoading();
mErrorHintView.noData();
break;
}
}
@Override
public void retry() {
}
@Override
public void netError() {
}
@Override
protected void obtainInfo() {
}
class CollectionAdapter extends BaseAdapter {
private static final int VIEW_TYPE = 3;
private static final int TYPE_0 = 0; //手机科技资讯
private static final int TYPE_1 = 1; //图片资讯
private static final int TYPE_2 = 2; //新闻博客
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
/**
* 每个convertView都会调用此方法,获得当前所需要的view样式
*/
@Override
public int getItemViewType(int position) {
Object obj = mList.get(position);
if (obj instanceof ArticleItem ) {
return TYPE_0;
} else if ( obj instanceof PhonePhotoItem ) {
return TYPE_1;
} else {
return TYPE_2;
}
}
@Override
public int getViewTypeCount() {
return VIEW_TYPE;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TechHolder techHolder = null;
PhotoHolder photoHolder = null;
BlogHolder blogHolder = null;
ArticleItem techItem = null;
PhonePhotoItem photoItem = null;
BlogItem blogItem = null;
Object obj = mList.get(position);
if ( obj instanceof ArticleItem ) {
techItem = ( ArticleItem )obj;
} else if ( obj instanceof PhonePhotoItem ) {
photoItem = ( PhonePhotoItem ) obj;
} else {
blogItem = (BlogItem) obj;
}
int viewType = getItemViewType(position);
if ( convertView == null ) {
switch (viewType) { //按当前所需的样式,确定new的布局
case TYPE_0:
techHolder = new TechHolder();
convertView = View.inflate(mContext, R.layout.item_index_intro_lv, null);
techHolder.img = (ImageView) convertView.findViewById(R.id.img);
techHolder.title = (TextView) convertView.findViewById(R.id.title);
techHolder.body = (TextView) convertView.findViewById(R.id.body);
techHolder.date = (TextView) convertView.findViewById(R.id.time);
convertView.setTag(techHolder);
break;
case TYPE_1:
photoHolder = new PhotoHolder();
convertView = View.inflate(mContext, R.layout.item_phone_photo_lv, null);
photoHolder.img = (ImageView) convertView.findViewById(R.id.img);
photoHolder.text = (TextView) convertView.findViewById(R.id.text);
convertView.setTag(photoHolder);
break;
case TYPE_2:
blogHolder = new BlogHolder();
convertView = View.inflate(mContext, R.layout.item_fresh_bolg_lv, null);
blogHolder.title = (TextView) convertView.findViewById(R.id.title);
blogHolder.uPic = (CircleImageView) convertView.findViewById(R.id.image);
blogHolder.name = (TextView) convertView.findViewById(R.id.name);
blogHolder.published = (TextView) convertView.findViewById(R.id.publish);
blogHolder.summary = (TextView) convertView.findViewById(R.id.summary);
blogHolder.viewsTv = (TextView) convertView.findViewById(R.id.views_tx);
blogHolder.diggsTv = (TextView) convertView.findViewById(R.id.diggs_tx);
blogHolder.commentsTv = (TextView) convertView.findViewById(R.id.comment_tx);
blogHolder.diggs = (LinearLayout) convertView.findViewById(R.id.hots_diggs);
blogHolder.views = (LinearLayout) convertView.findViewById(R.id.hots_views);
blogHolder.comment = (LinearLayout) convertView.findViewById(R.id.hots_comment);
convertView.setTag(blogHolder);
break;
}
} else {
switch (viewType) {
case TYPE_0:
techHolder = (TechHolder) convertView.getTag();
break;
case TYPE_1:
photoHolder = (PhotoHolder) convertView.getTag();
break;
case TYPE_2:
blogHolder = (BlogHolder) convertView.getTag();
break;
}
}
switch (viewType) {
case TYPE_0:
if ( techItem!=null ) {
if ( !TextUtils.isEmpty(techItem.getPicUrl()) ){
Picasso.with(mContext).load(techItem.getPicUrl()).placeholder(R.color.ECECEC).error(R.color.ECECEC).into(techHolder.img);
}
if ( !TextUtils.isEmpty(techItem.getTitle()) ) {
techHolder.title.setText(techItem.getTitle());
} else {
techHolder.title.setText("");
}
if ( !TextUtils.isEmpty(techItem.getTitle()) ) {
techHolder.body.setText(techItem.getContent());
} else {
techHolder.body.setText("");
}
if ( !TextUtils.isEmpty(techItem.getTitle()) ) {
techHolder.date.setText(techItem.getDate());
} else {
techHolder.date.setText("");
}
}
break;
case TYPE_1:
if ( photoItem!=null ) {
if ( !TextUtils.isEmpty(photoItem.getPic()) ){
Picasso.with(mContext).load(photoItem.getPic()).placeholder(R.color.ECECEC).error(R.color.ECECEC).into(photoHolder.img);
}
if ( !TextUtils.isEmpty(photoItem.getTitle()) ) {
photoHolder.text.setText(photoItem.getTitle());
} else {
photoHolder.text.setText("");
}
}
break;
case TYPE_2:
if ( blogItem!=null ) {
blogHolder.title.setText(blogItem.getTitle());
blogHolder.name.setText(blogItem.getName());
blogHolder.summary.setText(blogItem.getSummary());
if( !TextUtils.isEmpty(blogItem.getAvatar()) ) {
Picasso.with(mContext).load(blogItem.getAvatar()).placeholder(R.drawable.touxiang).error(R.drawable.touxiang).into(blogHolder.uPic);
}
if ( !TextUtils.isEmpty(blogItem.getPublished()) ) {
blogHolder.published.setText( DateUtils.convertGMTToLoacale(blogItem.getPublished()) );
}
if ( !TextUtils.isEmpty(blogItem.getViews()) ) {
blogHolder.viewsTv.setText(blogItem.getViews());
} else {
blogHolder.viewsTv.setText("");
}
if ( !TextUtils.isEmpty(blogItem.getComments()) ) {
blogHolder.commentsTv.setText(blogItem.getComments());
} else {
blogHolder.commentsTv.setText("");
}
if ( !TextUtils.isEmpty(blogItem.getDiggs()) ) {
blogHolder.diggsTv.setText(blogItem.getDiggs());
} else {
blogHolder.diggsTv.setText("");
}
}
break;
default:
break;
}
return convertView;
}
}
static class TechHolder {
ImageView img;
TextView title;
TextView body;
TextView date;
}
static class PhotoHolder{
ImageView img;
TextView text;
}
static class BlogHolder {
TextView title;
CircleImageView uPic;
TextView summary;
TextView published;
TextView viewsTv;
TextView diggsTv;
TextView name;
TextView commentsTv;
TextView textViews;
LinearLayout views;
LinearLayout diggs;
LinearLayout comment;
}
}