ListVIew简单实现多布局
2016-06-30 16:06
302 查看
<span style="font-size:18px;">package com.example.topnews.adapter; import android.content.Context; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.topnews.topnews.R; import com.example.topnews.vo.NewsData; import com.nostra13.universalimageloader.core.ImageLoader; import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedList; /** * Created by Mr雷 on 2016/6/17. */ public class FragmentNewsAdapter extends BaseAdapter { private Context context; private LinkedList<NewsData.DataBean> list; final int IMAGE_SMALL = 1; final int IMAGE_LARGE = 3; final int IMAGE_THREE = 2; final int TEXT = 0; final int VEDIO = 4; public FragmentNewsAdapter (Context context , LinkedList<NewsData.DataBean> list){ this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { NewsData.DataBean dataBean = list.get(i); int itemViewType = getItemViewType(i); ViewHolderTEXT viewHolderTEXT = null; ViewHolderSMALL viewHolderSMALL = null; ViewHolderTHREE viewHolderTHREE = null; ViewHolderLARGE viewHolderLARGE = null; ViewHolderVEDIO viewHolderVEDIO = null; if (view == null){ switch (itemViewType){ case TEXT: viewHolderTEXT = new ViewHolderTEXT(); view = View.inflate(context, R.layout.topnews_image_null,null); viewHolderTEXT.tvTitle_TEXT = (TextView)view.findViewById(R.id.tv_item_image_null_title); viewHolderTEXT.tvLabel_TEXT = (TextView)view.findViewById(R.id.tv_item_image_null_label); viewHolderTEXT.tvSource_TEXT = (TextView)view.findViewById(R.id.tv_item_image_null_source); viewHolderTEXT.tvCount_TEXT = (TextView)view.findViewById(R.id.tv_item_image_null_comment_count); viewHolderTEXT.tvTime_TEXT = (TextView)view.findViewById(R.id.tv_item_image_null_publish_time); viewHolderTEXT.imgDisLike_TEXT = (ImageView)view.findViewById(R.id.img_item_image_null_dislike); view.setTag(viewHolderTEXT); break; case IMAGE_SMALL: viewHolderSMALL = new ViewHolderSMALL(); view = View.inflate(context, R.layout.topnews_image_one_small,null); viewHolderSMALL.tvTitle_SMALL = (TextView)view.findViewById(R.id.tv_item_image_one_small_title); viewHolderSMALL.tvLabel_SMALL = (TextView)view.findViewById(R.id.tv_item_image_one_small_label); viewHolderSMALL.tvSource_SMALL = (TextView)view.findViewById(R.id.tv_item_image_one_small_source); viewHolderSMALL.tvCount_SMALL = (TextView)view.findViewById(R.id.tv_item_image_one_small_comment_count); viewHolderSMALL.imgDisLike_SMALL = (ImageView)view.findViewById(R.id.img_item_image_one_small_dislike); viewHolderSMALL.img_SMALL = (ImageView)view.findViewById(R.id.img_item_image_one_small_failed); view.setTag(viewHolderSMALL); break; case IMAGE_THREE: viewHolderTHREE = new ViewHolderTHREE(); view = View.inflate(context, R.layout.topnews_image_three,null); viewHolderTHREE.tvTitle_THREE = (TextView)view.findViewById(R.id.tv_item_image_three_title); viewHolderTHREE.tvLabel_THREE = (TextView)view.findViewById(R.id.tv_item_image_three_label); viewHolderTHREE.tvSource_THREE = (TextView)view.findViewById(R.id.tv_item_image_three_source); viewHolderTHREE.tvCount_THREE = (TextView)view.findViewById(R.id.tv_item_image_three_comment_count); viewHolderTHREE.tvTime_THREE = (TextView)view.findViewById(R.id.tv_item_image_three_publish_time); viewHolderTHREE.imgDisLike_THREE = (ImageView)view.findViewById(R.id.img_item_image_three_dislike); viewHolderTHREE.imgLeft_THREE = (ImageView)view.findViewById(R.id.img_item_image_three_failed_left); viewHolderTHREE.imgCenter_THREE = (ImageView)view.findViewById(R.id.img_item_image_three_failed_center); viewHolderTHREE.imgRight_THREE = (ImageView)view.findViewById(R.id.img_item_image_three_failed_right); view.setTag(viewHolderTHREE); break; case IMAGE_LARGE: viewHolderLARGE = new ViewHolderLARGE(); view = View.inflate(context, R.layout.topnews_image_one_big,null); viewHolderLARGE.tvTitle_LARGE = (TextView)view.findViewById(R.id.tv_item_image_one_big_title); viewHolderLARGE.tvLabel_LARGE = (TextView)view.findViewById(R.id.tv_item_image_one_big_label); viewHolderLARGE.tvSource_LARGE = (TextView)view.findViewById(R.id.tv_item_image_one_big_source); viewHolderLARGE.tvCount_LARGE = (TextView)view.findViewById(R.id.tv_item_image_one_big_comment_count); viewHolderLARGE.tvTime_LARGE = (TextView)view.findViewById(R.id.tv_item_image_one_big_publish_time); viewHolderLARGE.imgDisLike_LARGE = (ImageView)view.findViewById(R.id.img_item_image_one_big_dislike); viewHolderLARGE.img_LARGE = (ImageView)view.findViewById(R.id.img_item_image_one_big_failed_left); view.setTag(viewHolderLARGE); break; case VEDIO: viewHolderVEDIO = new ViewHolderVEDIO(); view = View.inflate(context, R.layout.topnews_video,null); viewHolderVEDIO.tvTitle_VEDIO = (TextView)view.findViewById(R.id.tv_item_image_video_title); viewHolderVEDIO.tvLabel_VEDIO = (TextView)view.findViewById(R.id.tv_item_image_video_label); viewHolderVEDIO.tvSource_VEDIO = (TextView)view.findViewById(R.id.tv_item_image_video_source); viewHolderVEDIO.tvCount_VEDIO = (TextView)view.findViewById(R.id.tv_item_image_video_comment_count); viewHolderVEDIO.tvTime_VEDIO = (TextView)view.findViewById(R.id.tv_item_image_video_publish_time); viewHolderVEDIO.imgDisLike_VEDIO = (ImageView)view.findViewById(R.id.img_item_image_video_dislike); viewHolderVEDIO.img_VEDIO = (ImageView)view.findViewById(R.id.img_item_image_video_failed_left); view.setTag(viewHolderVEDIO); break; } } else{ switch (itemViewType){ case TEXT: viewHolderTEXT = (ViewHolderTEXT) view.getTag(); break; case IMAGE_SMALL: viewHolderSMALL = (ViewHolderSMALL) view.getTag(); break; case IMAGE_THREE: viewHolderTHREE = (ViewHolderTHREE) view.getTag(); break; case IMAGE_LARGE: viewHolderLARGE = (ViewHolderLARGE) view.getTag(); break; case VEDIO: viewHolderVEDIO = (ViewHolderVEDIO) view.getTag(); break; } } ImageLoader imageLoader = ImageLoader.getInstance(); switch (itemViewType){ case TEXT: viewHolderTEXT.tvTitle_TEXT.setText(dataBean.getTitle()); setTV(viewHolderTEXT.tvLabel_TEXT,dataBean.getLabel()); viewHolderTEXT.tvSource_TEXT.setText(dataBean.getSource()); viewHolderTEXT.tvCount_TEXT.setText(dataBean.getComment_count()+""); viewHolderTEXT.tvTime_TEXT.setText(getDate(dataBean.getPublish_time())+"小时之前"); break; case IMAGE_SMALL: viewHolderSMALL.tvTitle_SMALL.setText(dataBean.getTitle()); setTV(viewHolderSMALL.tvLabel_SMALL,dataBean.getLabel()); viewHolderSMALL.tvSource_SMALL.setText(dataBean.getSource()); viewHolderSMALL.tvCount_SMALL.setText(dataBean.getComment_count()+""); imageLoader.displayImage(dataBean.getMiddle_image().getUrl(),viewHolderSMALL.img_SMALL); break; case IMAGE_THREE: viewHolderTHREE.tvTitle_THREE.setText(dataBean.getTitle()); setTV(viewHolderTHREE.tvLabel_THREE,dataBean.getLabel()); viewHolderTHREE.tvSource_THREE.setText(dataBean.getSource()); viewHolderTHREE.tvCount_THREE.setText(dataBean.getComment_count()+""); viewHolderTHREE.tvTime_THREE.setText(getDate(dataBean.getPublish_time())+"小时之前"); if(dataBean.getImage_list().size() == 3){ imageLoader.displayImage(dataBean.getImage_list().get(0).getUrl(),viewHolderTHREE.imgLeft_THREE); imageLoader.displayImage(dataBean.getImage_list().get(1).getUrl(),viewHolderTHREE.imgCenter_THREE); imageLoader.displayImage(dataBean.getImage_list().get(2).getUrl(),viewHolderTHREE.imgRight_THREE); }else if (dataBean.getImage_list().size() == 1){ imageLoader.displayImage(dataBean.getImage_list().get(0).getUrl(),viewHolderTHREE.imgLeft_THREE); viewHolderTHREE.imgCenter_THREE.setVisibility(View.GONE); viewHolderTHREE.imgRight_THREE.setVisibility(View.GONE); } break; case IMAGE_LARGE: viewHolderLARGE.tvTitle_LARGE.setText(dataBean.getTitle()); setTV(viewHolderLARGE.tvLabel_LARGE,dataBean.getLabel()); viewHolderLARGE.tvSource_LARGE.setText(dataBean.getSource()); viewHolderLARGE.tvCount_LARGE.setText(dataBean.getComment_count()+""); viewHolderLARGE.tvTime_LARGE.setText(getDate(dataBean.getPublish_time())+"小时之前"); imageLoader.displayImage(dataBean.getLarge_image_list().get(0).getUrl(),viewHolderLARGE.img_LARGE); break; case VEDIO: viewHolderVEDIO.tvTitle_VEDIO.setText(dataBean.getTitle()); setTV(viewHolderVEDIO.tvLabel_VEDIO,dataBean.getLabel()); viewHolderVEDIO.tvSource_VEDIO.setText(dataBean.getSource()); viewHolderVEDIO.tvCount_VEDIO.setText(dataBean.getComment_count()+""); viewHolderVEDIO.tvTime_VEDIO.setText(getDate(dataBean.getPublish_time())+"小时之前"); imageLoader.displayImage(dataBean.getLarge_image_list().get(0).getUrl(),viewHolderVEDIO.img_VEDIO); break; } return view; } protected void setTV(TextView tv,String type){ if(type == null){ tv.setVisibility(View.GONE); }else if ("置顶".equals(type)){ tv.setText(type); tv.setBackgroundResource(R.color.darkgray); }else if ("视频".equals(type)){ tv.setText(type); tv.setBackgroundResource(R.color.blue); }else if ("图片".equals(type)){ tv.setText(type); tv.setBackgroundResource(R.color.blue); }else if ("推广".equals(type)){ tv.setText(type); tv.setBackgroundResource(R.color.darkgray); }else if ("问答".equals(type)){ tv.setText(type); tv.setBackgroundResource(R.color.blue); }else if ("热".equals(type)){ tv.setText(type); } } protected String getDate(int time){ Date date = new Date(time); SimpleDateFormat dateFormat = new SimpleDateFormat("HH"); String format = dateFormat.format(date); return format; } @Override public int getItemViewType(int position) { NewsData.DataBean dataBean = list.get(position); if(dataBean.isHas_video()){ if(dataBean.getLarge_image_list() != null){ if(dataBean.getLarge_image_list().size() != 0 ){ return VEDIO; } } else{ return IMAGE_SMALL; } } else if(dataBean.isHas_image()){ if(dataBean.getLarge_image_list() != null){ if (dataBean.getLarge_image_list().size() != 0){ Log.d("aaa","适配器==============大图"); return IMAGE_LARGE; } } else if(dataBean.getImage_list()!=null){ if(dataBean.getImage_list().size() >= 3){ Log.d("aaa","适配器==============小图"); return IMAGE_THREE; }else{ Log.d("aaa","适配器==============小图1"); return IMAGE_THREE; } } else if(dataBean.getMiddle_image() != null){ if (dataBean.getMiddle_image() != null){ Log.d("aaa","适配器==============中图"); return IMAGE_SMALL; } } } else if(dataBean.getMiddle_image() != null){ if (dataBean.getMiddle_image().getUrl() != null){ Log.d("aaa","适配器==============中图1"+dataBean.getTitle()); return IMAGE_SMALL; } } else if(dataBean.getLarge_image_list() != null){ if (dataBean.getLarge_image_list().size() != 0){ Log.d("aaa","适配器==============大图"); return IMAGE_LARGE; } } Log.d("aaa","适配器==============文本"); return TEXT; } @Override public int getViewTypeCount() { return 5; } class ViewHolderTEXT{ TextView tvTitle_TEXT; TextView tvLabel_TEXT; TextView tvSource_TEXT; TextView tvCount_TEXT; TextView tvTime_TEXT; ImageView imgDisLike_TEXT; } class ViewHolderSMALL{ TextView tvTitle_SMALL; TextView tvLabel_SMALL; TextView tvSource_SMALL; TextView tvCount_SMALL; ImageView imgDisLike_SMALL; ImageView img_SMALL; } class ViewHolderTHREE{ TextView tvTitle_THREE; TextView tvLabel_THREE; TextView tvSource_THREE; TextView tvCount_THREE; TextView tvTime_THREE; ImageView imgDisLike_THREE; ImageView imgLeft_THREE; ImageView imgCenter_THREE; ImageView imgRight_THREE; } class ViewHolderLARGE{ TextView tvTitle_LARGE; TextView tvLabel_LARGE; TextView tvSource_LARGE; TextView tvCount_LARGE; TextView tvTime_LARGE; ImageView imgDisLike_LARGE; ImageView img_LARGE; } class ViewHolderVEDIO{ TextView tvTitle_VEDIO; TextView tvLabel_VEDIO; TextView tvSource_VEDIO; TextView tvCount_VEDIO; TextView tvTime_VEDIO; ImageView imgDisLike_VEDIO; ImageView img_VEDIO; } } </span>
相关文章推荐
- android 百度地图系列之地图初始化及定位
- android屏幕适配
- BAPI_GOODSMVT_CREATE for subcontracting PO
- centos启用ftp功能
- python下的socket常用方法举例
- python下的socket常用方法举例
- Linux文本工具sed
- 关于ajax的页面加载操作防止脏数据的产生
- JAVA自学之每日一题(三)
- ScyllaDB 1.2 国内安装更新源发布
- 短信管理器(SmsManager)
- Struts2框架学习(三) 数据处理
- 解决ListView中Item的子控件(比如Button)与Item点击事件冲突
- java.lang.IllegalArgumentException: Page directive: invalid value for import
- Oracle数据库的备份 数据导入与导出 Oracle
- HDOJ 1695 GCD
- 38. Count and Say
- JAVA 内存管理总结
- Struts2框架学习(二) Action
- nginx lua调用redis和mongo