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; } }