package com.daifan.activity.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.androidquery.AQuery;
import com.daifan.R;
import com.daifan.domain.Status;
import com.daifan.util.DateTimeUtils;
import com.daifan.util.Util;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Created by ronghao on 13-7-21.
* feeds item list
*/
public class StatusItemAdapter extends BaseAdapter {
private Context mContext;
private List<Status> mStatuses;
private final ImageLoader mImageLoader;
public StatusItemAdapter(Context context, ImageLoader imageLoader) {
mContext = context;
mStatuses = new ArrayList<Status>();
mImageLoader = imageLoader;
}
@Override
public int getCount() {
return mStatuses.size();
}
@Override
public Object getItem(int position) {
return mStatuses.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
static class ViewHolder {
TextView createDate;
TextView statusType;
TextView conmentOrText;
NetworkImageView thumbnailPic;
ImageView tweetAddressPic;
TextView address;
ImageView tweetBookPic;
TextView tweetBook;
ImageView tweetCommentPic;
TextView tweetComment;
TextView retweetedText;
View subLayout;
NetworkImageView tweetUploadPic2;
TextView address2;
ImageView tweetBookPic2;
TextView tweetBook2;
ImageView tweetCommentPic2;
TextView tweetComment2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Status status = null;
ViewHolder holder;
//Log.d("getView:" + position);
if (position < mStatuses.size()) {
status = mStatuses.get(position);
}
convertView = Util.inflateView(R.layout.list_item_status, mContext);
holder = new ViewHolder();
holder.createDate = (TextView) convertView.findViewById(R.id.tvItemDate);
holder.statusType = (TextView) convertView.findViewById(R.id.tvItemName);
holder.conmentOrText = (TextView) convertView.findViewById(R.id.tvItemContent);
holder.thumbnailPic = (NetworkImageView) convertView.findViewById(R.id.tweet_upload_pic1);
holder.address = (TextView) convertView.findViewById(R.id.tweet_form);
holder.tweetAddressPic = (ImageView) convertView.findViewById(R.id.tweet_address_pic);
holder.tweetBookPic = (ImageView) convertView.findViewById(R.id.tweet_redirect_pic);
holder.tweetBook = (TextView) convertView.findViewById(R.id.tweet_redirect);
holder.tweetCommentPic = (ImageView) convertView.findViewById(R.id.tweet_comment_pic);
holder.tweetComment = (TextView) convertView.findViewById(R.id.tweet_comment);
holder.subLayout = convertView.findViewById(R.id.subLayout);
holder.retweetedText = (TextView) convertView.findViewById(R.id.tvItemSubContent);
holder.tweetUploadPic2 = (NetworkImageView) convertView.findViewById(R.id.tweet_upload_pic2);
holder.address2 = (TextView) convertView.findViewById(R.id.tweet_form2);
holder.tweetBookPic2 = (ImageView) convertView.findViewById(R.id.tweet_redirect_pic2);
holder.tweetBook2 = (TextView) convertView.findViewById(R.id.tweet_redirect2);
holder.tweetCommentPic2 = (ImageView) convertView.findViewById(R.id.tweet_comment_pic2);
holder.tweetComment2 = (TextView) convertView.findViewById(R.id.tweet_comment2);
AQuery aq = new AQuery(convertView);
//Enable hardware acceleration if the device has API 11 or above
aq.hardwareAccelerated11();
holder.statusType.setText(status.type == Status.FEED_TYPE_CREATE ?
R.string.feed_type_create : R.string.feed_type_book);
String time = "";
Date date = Util.parseDate(status.createdAt);
if (date != null) {
time = DateTimeUtils.getInstance(mContext).getMonthAndDay(date);
}
holder.createDate.setText(time);
holder.conmentOrText.setText(status.type == Status.FEED_TYPE_CREATE ? status.text : status.comment,
TextView.BufferType.SPANNABLE);
if (status.type == Status.FEED_TYPE_CREATE) {
holder.address.setText(status.address);
holder.address.setVisibility(View.VISIBLE);
holder.tweetAddressPic.setVisibility(View.VISIBLE);
if (status.bookedCount > 0) {
aq.id(R.id.tweet_redirect_pic).visible();
holder.tweetBookPic.setVisibility(View.VISIBLE);
holder.tweetBook.setText(String.valueOf(status.bookedCount));
holder.tweetBook.setVisibility(View.VISIBLE);
}
if (status.commentCount > 0) {
holder.tweetCommentPic.setVisibility(View.VISIBLE);
holder.tweetComment.setText(String.valueOf(status.commentCount));
holder.tweetComment.setVisibility(View.VISIBLE);
}
} else {
holder.address2.setText(status.address);
holder.address2.setVisibility(View.VISIBLE);
if (status.bookedCount > 0) {
aq.id(R.id.tweet_redirect_pic2).visible();
holder.tweetBookPic2.setVisibility(View.VISIBLE);
holder.tweetBook2.setText(String.valueOf(status.bookedCount));
holder.tweetBook2.setVisibility(View.VISIBLE);
}
if (status.commentCount > 0) {
holder.tweetCommentPic2.setVisibility(View.VISIBLE);
holder.tweetComment2.setText(String.valueOf(status.commentCount));
holder.tweetComment2.setVisibility(View.VISIBLE);
}
}
if (status.type == Status.FEED_TYPE_CREATE && status.thumbnailPic != null) {
// final String middleImageUrl = status.bmiddle_pic;
// final String originalPicUrl = status.original_pic;
holder.thumbnailPic.setImageUrl(status.thumbnailPic, mImageLoader);
aq.id(holder.thumbnailPic).visible();
// aq.id(holder.thumbnailPic).clicked(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// Intent intent = new Intent(Consts.ACTION_SHOW_IMAGE_VIWVER);
// intent.putExtra(Consts.MIDDLE_IMAGE_URL_KEY, middleImageUrl);
// intent.putExtra(Consts.ORIGINAL_PIC_URL_KEY, originalPicUrl);
//
// mContext.startActivity(intent);
// }
//
// });
}
if (status.type == Status.FEED_TYPE_BOOK) {
holder.subLayout.setVisibility(View.VISIBLE);
String text = "@" + status.userName + ":";
text += status.text;
holder.retweetedText.setText(text, TextView.BufferType.SPANNABLE);
if (status.thumbnailPic != null) {
holder.tweetUploadPic2.setImageUrl(status.thumbnailPic, mImageLoader);
aq.id(holder.tweetUploadPic2).visible();
}
}
return convertView;
}
public void addStatuses(Status status) {
mStatuses.add(status);
}
public void addNewestStatuses(List<Status> statuses) {
mStatuses.addAll(0, statuses);
}
}