您的位置:首页 > 其它

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: