listview多条目展示

来源:互联网 发布:3d游戏编程大师技巧 编辑:程序博客网 时间:2024/05/17 18:29
package com.bwie.topLinapp.adapter;

import java.util.List;
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 android.widget.VideoView;
import com.bwie.first.R;
import com.bwie.topLinapp.bean.NewsInfo.DataBean;
import com.bwie.topLineapp.utils.CommonUtils;
import com.bwie.topLineapp.utils.ImageLoaderUtils;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

public class CategoryItemAdapter extends BaseAdapter {

    private static final int TYPE_LISTVIEW_NORMAL = 1;
    private static final int TYPE_LISTVIEW_NO_PIC = 2;
    private static final int TYPE_LISTVIEW_VIDEO = 3;
    private static final int TYPE_LISTVIEW_MULTIPLE_PIC = 4;
    private static final int TYPE_LISTVIEW_LARGE_PIC = 5;
    private DisplayImageOptions initOptions;
    Context context;
    List<DataBean> dataList;

    public CategoryItemAdapter(Context context, List<DataBean> dataList) {
        this.context = context;
        this.dataList = dataList;
        initOptions = ImageLoaderUtils.initOptions();
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return dataList != null ? dataList.size() : 0;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return dataList.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    /**
     * 获取listview条目类别的个数
     */
    @Override
    public int getViewTypeCount() {
        return 5;
    }

    /**
     * 获取具体的某个索引值下的条目的条目类型
     */
    @Override
    public int getItemViewType(int position) {
        if (dataList.get(position).has_video) {
            return TYPE_LISTVIEW_VIDEO;
        }
        if (dataList.get(position).has_image) {
            return TYPE_LISTVIEW_NO_PIC;
        }
        if (dataList.get(position).large_image_list != null
                && dataList.get(position).large_image_list.size() > 0) {
            return TYPE_LISTVIEW_LARGE_PIC;
        }
        if (dataList.get(position).image_list != null
                && dataList.get(position).image_list.size() > 0) {
            return TYPE_LISTVIEW_MULTIPLE_PIC;
        }
        return TYPE_LISTVIEW_NORMAL;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 获取当前条目的类型
        int itemViewType = getItemViewType(position);

        BaseViewHolder baseViewHolder;
        if (convertView == null) {
            baseViewHolder = new BaseViewHolder();
            switch (itemViewType) {
            case TYPE_LISTVIEW_LARGE_PIC:
                convertView = CommonUtils.inflate(R.layout.type_large_pic_item);
                baseViewHolder.iv_news_pic = (ImageView) convertView
                        .findViewById(R.id.iv_news_pic);
                convertView.setTag(baseViewHolder);
                break;
            case TYPE_LISTVIEW_MULTIPLE_PIC:
                convertView = CommonUtils
                        .inflate(R.layout.type_multiple_pic_item);
                baseViewHolder.iv_news_pic1 = (ImageView) convertView
                        .findViewById(R.id.iv_news_pic1);
                baseViewHolder.iv_news_pic2 = (ImageView) convertView
                        .findViewById(R.id.iv_news_pic2);
                baseViewHolder.iv_news_pic3 = (ImageView) convertView
                        .findViewById(R.id.iv_news_pic3);
                convertView.setTag(baseViewHolder);
                break;
            case TYPE_LISTVIEW_NO_PIC:
                convertView = CommonUtils.inflate(R.layout.type_no_pic_item);
                convertView.setTag(baseViewHolder);
                break;
            case TYPE_LISTVIEW_NORMAL:
                convertView = CommonUtils.inflate(R.layout.type_normal_item);
                baseViewHolder.iv_news_pic = (ImageView) convertView
                        .findViewById(R.id.iv_news_pic);
                convertView.setTag(baseViewHolder);
                break;
            case TYPE_LISTVIEW_VIDEO:
                convertView = CommonUtils.inflate(R.layout.type_video_item);
                baseViewHolder.iv_news_pic = (ImageView) convertView
                        .findViewById(R.id.iv_news_pic);

                convertView.setTag(baseViewHolder);
                break;
            default:
                break;
            }
            baseViewHolder.tv_news_comment = (TextView) convertView
                    .findViewById(R.id.tv_news_comment);
            baseViewHolder.tv_news_source = (TextView) convertView
                    .findViewById(R.id.tv_news_source);
            baseViewHolder.tv_news_title = (TextView) convertView
                    .findViewById(R.id.tv_news_title);
            baseViewHolder.tv_news_time = (TextView) convertView
                    .findViewById(R.id.tv_news_time);
            baseViewHolder.iv_news_delete = (ImageView) convertView
                    .findViewById(R.id.iv_news_delete);
            baseViewHolder.tv_news_comment
                    .setText(dataList.get(position).comment_count + "");
            baseViewHolder.tv_news_source
                    .setText(dataList.get(position).source);
            baseViewHolder.tv_news_title.setText(dataList.get(position).title);

        } else {
            baseViewHolder = (BaseViewHolder) convertView.getTag();
            switch (itemViewType) {
            case TYPE_LISTVIEW_LARGE_PIC:
                ImageLoader.getInstance().displayImage(
                        dataList.get(position).large_image_list.get(0).url,
                        baseViewHolder.iv_news_pic, initOptions);
                break;
            case TYPE_LISTVIEW_MULTIPLE_PIC:
                ImageLoader.getInstance().displayImage(
                        dataList.get(position).image_list.get(0).url,
                        baseViewHolder.iv_news_pic1, initOptions);
                ImageLoader.getInstance().displayImage(
                        dataList.get(position).image_list.get(1).url,
                        baseViewHolder.iv_news_pic2, initOptions);
                ImageLoader.getInstance().displayImage(
                        dataList.get(position).image_list.get(2).url,
                        baseViewHolder.iv_news_pic3, initOptions);
                break;
            case TYPE_LISTVIEW_NO_PIC:
                break;
            case TYPE_LISTVIEW_NORMAL:
                try {
                    ImageLoader.getInstance().displayImage(
                            dataList.get(position).middle_image.url,
                            baseViewHolder.iv_news_pic, initOptions);
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                break;
            case TYPE_LISTVIEW_VIDEO:
                try {
                    ImageLoader.getInstance().displayImage(
                            dataList.get(position).large_image_list.get(0).url,
                            baseViewHolder.iv_news_pic, initOptions);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            default:
                break;
            }
            baseViewHolder.tv_news_comment
                    .setText(dataList.get(position).comment_count + "");
            baseViewHolder.tv_news_source
                    .setText(dataList.get(position).source);
            baseViewHolder.tv_news_title.setText(dataList.get(position).title);
        }

        // 赋值

        return convertView;
    }

    class BaseViewHolder {
        TextView tv_news_comment, tv_news_title, tv_news_time, tv_news_source,
                tv_news_type;
        ImageView iv_news_pic, iv_news_pic1, iv_news_pic2, iv_news_pic3;
        VideoView vv_news;
        ImageView iv_news_delete;
    }
}

0 0