package com.martin.ionichinabystudio.ui.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.Volley;
import com.martin.ionichinabystudio.R;
import com.martin.ionichinabystudio.config.Constant;
import com.martin.ionichinabystudio.model.entity.TopicDetailsEntity;
import com.martin.simpledevelop.utils.cache.BitmapCache;
import com.martin.simpledevelop.utils.date.SaDateUtils;
import com.martin.simpledevelop.utils.log.SaLogUtils;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
/**
* @Description 话题的详情列表数据
* @File TopicDetailsAdapter.java
* @Package com.martin.ionichinabystudio.ui.adapter
* @Date 2015/7/1215:05
* @Author Donghongyu 1358506549@qq.com
* @Version v1.0.0
*/
public class TopicDetailsAdapter extends BaseAdapter {
//布局填充
private LayoutInflater mInflater;
// 创建话题的的详情的解析结果集合
private ArrayList<TopicDetailsEntity> mDatas = new ArrayList<TopicDetailsEntity>();
//基于Volley的图片加载
private ImageLoader mImageLoader;
private Context mContext;
public TopicDetailsAdapter(Context context) {
mInflater = LayoutInflater.from(context);
RequestQueue mQueue = Volley.newRequestQueue(context);
mImageLoader = new ImageLoader(mQueue, new BitmapCache(context));
}
public void addList(ArrayList<TopicDetailsEntity> datas) {
mDatas.addAll(datas);
}
@Override
public int getCount() {
return mDatas.size();
}
@Override
public Object getItem(int position) {
return mDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
switch (mDatas.get(position).getTopicType()) {
case Constant.TOPIC_TYPE_TITLE:
return 0;
case Constant.TOPIC_TYPE_CREATE_DATE:
return 1;
case Constant.TOPIC_TYPE_CONTENT:
return 2;
case Constant.TOPIC_TYPE_IMG_URL:
return 3;
}
return -1;
}
@Override
public int getViewTypeCount() {
return 4;
}
@Override
public boolean isEnabled(int position) {
switch (mDatas.get(position).getTopicType()) {
case Constant.TOPIC_TYPE_IMG_URL:
return true;
default:
return false;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TopicDetailsEntity entity = mDatas.get(position);
ViewHolder holder = null;
if (null == convertView) {
holder = new ViewHolder();
switch (entity.getTopicType()) {
case Constant.TOPIC_TYPE_TITLE:
convertView = mInflater.inflate(R.layout.item_topic_details_title, null);
holder.mTextView = (TextView) convertView.findViewById(R.id.tv_topic_title);
break;
case Constant.TOPIC_TYPE_CREATE_DATE:
convertView = mInflater.inflate(R.layout.item_topic_details_date, null);
holder.mTextView = (TextView) convertView.findViewById(R.id.tv_topic_date);
break;
case Constant.TOPIC_TYPE_CONTENT:
convertView = mInflater.inflate(R.layout.item_topic_details_content, null);
holder.mTextView = (TextView) convertView.findViewById(R.id.tv_topic_content);
break;
case Constant.TOPIC_TYPE_IMG_URL:
convertView = mInflater.inflate(R.layout.item_topic_details_img, null);
holder.mImageView = (NetworkImageView) convertView.findViewById(R.id.item_topic_img);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (null != entity) {
switch (entity.getTopicType()) {
case Constant.TOPIC_TYPE_IMG_URL:
//得到图片的路径
String imgURL = entity.getTopicImgUrl();
//判断图片路径的合法性
holder.mImageView.setTag(imgURL);
holder.mImageView.setDefaultImageResId(R.drawable.discover_image_default);
holder.mImageView.setErrorImageResId(R.drawable.discover_image_default);
holder.mImageView.setImageUrl(imgURL, mImageLoader);
break;
case Constant.TOPIC_TYPE_TITLE:
holder.mTextView.setText(entity.getTopicTitle());
break;
case Constant.TOPIC_TYPE_CREATE_DATE:
// 设置话题的最后更新日期
String dateStr = entity.getTopicCreateDate();
dateStr = dateStr.replace("T", " ");
dateStr = dateStr.replace("Z", " ");
holder.mTextView.setText(SaDateUtils
.formatDateStr2Desc(dateStr, SaDateUtils.dateFormatYMDHMS));
break;
case Constant.TOPIC_TYPE_CONTENT:
holder.mTextView.setText(Html.fromHtml(entity.getTopicContent()));
break;
}
}
return convertView;
}
private final class ViewHolder {
TextView mTextView;
NetworkImageView mImageView;
}
}