listView分类型,getItemViewType()的用法

很多项目中都用到了分类展示不同的UI,比如一个列表中有几种不同样式的item就可以用分类型的方式展示。。。下面以adapter为例。

getItemView()的用法。。

package com.palmnewsclient.test;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;


import com.bumptech.glide.Glide;
import com.newnet.ydc.palmNews.R;
import com.palmnewsclient.bean.NewsListBean;
import com.palmnewsclient.data.AppConfig;
import com.palmnewsclient.newcenter.helper.NewHelpUtils;
import com.palmnewsclient.utils.AppManager;
import com.palmnewsclient.utils.Constant;
import com.palmnewsclient.utils.Constants;
import com.palmnewsclient.utils.LoggerUtil;
import com.palmnewsclient.utils.MoudleControlUtils;
import com.palmnewsclient.utils.SPUtils;
import com.palmnewsclient.utils.ScreenUtils;
import com.palmnewsclient.videocenter.VideoActivity;


import java.util.ArrayList;
import java.util.List;


import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard;


/**
 * Created by 24543 on 2017/5/9.
 * 首页新闻列表adapter
 * 分类型的
 */
public class NewsTypeListAdapter1 extends BaseAdapter {


    private Context mContext;
    LinearLayout linearLayout = null;
    LayoutInflater inflater;
    private List<NewsListBean.BodyEntity.DataEntity> mNewLists = new ArrayList<>();
    private int thrumbSize;


    private final int TYPE_1 = 0;//无图模式
    private final int TYPE_2 = 1;//大图模式
    private final int TYPE_3 = 2;//左缩略图
    private final int TYPE_4 = 3;//三图模式
    private final int TYPE_5 = 4;//右缩略图
    private final int TYPE_6 = 5;//视频模式
    private boolean isLoadTime;


    public NewsTypeListAdapter1(Context mContext, List<NewsListBean.BodyEntity.DataEntity> mNewLists) {
        this.mContext = mContext;
        this.mNewLists = mNewLists;


    }


    @Override
    public int getViewTypeCount() {
        return 6;
    }


    @Override
    public int getCount() {
        return mNewLists.size();
    }


    @Override
    public int getItemViewType(int position) {
        //解决bug1658
        int showType = mNewLists.get(position).getShowType();
        LoggerUtil.error("showType=" + showType);
        if (showType == TYPE_1) {
            if (mNewLists.get(position).getNewType() == 10) {
                showType = TYPE_6;  //视频
            } else {
                showType = TYPE_1; //无图
            }
        }
        return showType;
    }


    @Override
    public Object getItem(int i) {
        return mNewLists.get(i);
    }


    @Override
    public long getItemId(int i) {
        return i;
    }




    @Override
    public View getView(int position, View convertView, ViewGroup parent) {


        //类型为99的时候为广告
        TypeViewHolder1 holder1 = null;
        TypeViewHolder2 holder2 = null;
        TypeViewHolder3 holder3 = null;
        TypeViewHolder4 holder4 = null;
        TypeViewHolder5 holder5 = null;
        TypeViewHolder6 holder6 = null;
        int type = getItemViewType(position);
        if (convertView == null) {
            inflater = LayoutInflater.from(mContext);
            // 按当前所需的样式,确定news的布局
            switch (type) {
                case TYPE_1:
                    convertView = inflater.inflate(R.layout.item_news_type_no_img, parent, false);
                    holder1 = new TypeViewHolder1();
                    holder1.type1Title = (TextView) convertView.findViewById(R.id.tv_new_type1_title);
                    holder1.type1Time = (TextView) convertView.findViewById(R.id.tv_new_type1_time);
                    holder1.type1Lable = (TextView) convertView.findViewById(R.id.tv_new_type1_lable);
                    holder1.type1Lable2 = (TextView) convertView.findViewById(R.id.tv_new_type1_lable2);
                    holder1.type1Lable3 = (TextView) convertView.findViewById(R.id.tv_new_type1_lable3);
                    convertView.setTag(holder1);
                    break;
                case TYPE_2:
                    convertView = inflater.inflate(R.layout.item_news_type_big_img, parent, false);
                    holder2 = new TypeViewHolder2();
                    holder2.type2Title = (TextView) convertView.findViewById(R.id.tv_new_type2_title);
                    holder2.type2Time = (TextView) convertView.findViewById(R.id.tv_new_type2_time);
                    holder2.type2Lable = (TextView) convertView.findViewById(R.id.tv_new_type2_lable);
                    holder2.type2Lable2 = (TextView) convertView.findViewById(R.id.tv_new_type2_lable2);
                    holder2.type2Lable3 = (TextView) convertView.findViewById(R.id.tv_new_type2_lable3);
                    holder2.ivtype2Img = (ImageView) convertView.findViewById(R.id.iv_new_type2_img);
                    ScreenUtils.setSeven_Sixteenth(mContext, holder2.ivtype2Img);
                    convertView.setTag(holder2);
                    break;
                case TYPE_3:
                    convertView = inflater.inflate(R.layout.item_news_type_thumb_left_img, parent, false);
                    holder3 = new TypeViewHolder3();
                    holder3.type3Title = (TextView) convertView.findViewById(R.id.tv_new_type3_title);
                    holder3.type3Time = (TextView) convertView.findViewById(R.id.tv_new_type3_time);
                    holder3.type3Lable = (TextView) convertView.findViewById(R.id.tv_new_type3_lable);
                    holder3.type3Lable2 = (TextView) convertView.findViewById(R.id.tv_new_type3_lable2);
                    holder3.type3Lable3 = (TextView) convertView.findViewById(R.id.tv_new_type3_lable3);
                    holder3.ivtype3Img = (ImageView) convertView.findViewById(R.id.iv_new_type3_img);
                    convertView.setTag(holder3);
                    break;
                case TYPE_4:
                    convertView = inflater.inflate(R.layout.item_news_type_three_img, parent, false);
                    holder4 = new TypeViewHolder4();
                    holder4.type4Title = (TextView) convertView.findViewById(R.id.tv_new_type4_title);
                    holder4.type4Time = (TextView) convertView.findViewById(R.id.tv_new_type4_time);
                    holder4.type4Lable = (TextView) convertView.findViewById(R.id.tv_new_type4_lable);
                    holder4.type4Lable2 = (TextView) convertView.findViewById(R.id.tv_new_type4_lable2);
                    holder4.type4Lable3 = (TextView) convertView.findViewById(R.id.tv_new_type4_lable3);
                    holder4.ivtype4Img1 = (ImageView) convertView.findViewById(R.id.iv_new_type4_img1);
                    holder4.ivtype4Img2 = (ImageView) convertView.findViewById(R.id.iv_new_type4_img2);
                    holder4.ivtype4Img3 = (ImageView) convertView.findViewById(R.id.iv_new_type4_img3);
                    holder4.llImgthrumb = (LinearLayout) convertView.findViewById(R.id.ll_imgthrumb);
                    holder4.tvImgthrumbNum = (TextView) convertView.findViewById(R.id.tv_imgthrumb_num);
                    holder4.llThreeImage = (LinearLayout) convertView.findViewById(R.id.ll_three_image);
                    convertView.setTag(holder4);
                    break;
                case TYPE_5:
                    convertView = inflater.inflate(R.layout.item_news_type_thumb_right_img, parent, false);
                    holder5 = new TypeViewHolder5();
                    holder5.type5Title = (TextView) convertView.findViewById(R.id.tv_new_type5_title);
                    holder5.type5Time = (TextView) convertView.findViewById(R.id.tv_new_type5_time);
                    holder5.type5Lable = (TextView) convertView.findViewById(R.id.tv_new_type5_lable);
                    holder5.type5Lable2 = (TextView) convertView.findViewById(R.id.tv_new_type5_lable2);
                    holder5.type5Lable3 = (TextView) convertView.findViewById(R.id.tv_new_type5_lable3);
                    holder5.ivtype5Img = (ImageView) convertView.findViewById(R.id.iv_new_type5_img);
                    convertView.setTag(holder5);
                    break;
                case TYPE_6:
                    convertView = inflater.inflate(R.layout.item_news_type_video, parent, false);
                    holder6 = new TypeViewHolder6();
                    holder6.jcVideoPlayer = (JCVideoPlayerStandard) convertView.findViewById(R.id.jc_video);
                    convertView.setTag(holder6);
                    break;
            }
        } else {
            switch (type) {
                case TYPE_1:
                    holder1 = (TypeViewHolder1) convertView.getTag();
                    break;
                case TYPE_6:
                    holder6 = (TypeViewHolder6) convertView.getTag();
                    break;
                case TYPE_2:
                    holder2 = (TypeViewHolder2) convertView.getTag();
                    break;
                case TYPE_3:
                    holder3 = (TypeViewHolder3) convertView.getTag();
                    break;
                case TYPE_4:
                    holder4 = (TypeViewHolder4) convertView.getTag();
                    break;
                case TYPE_5:
                    holder5 = (TypeViewHolder5) convertView.getTag();
                    break;
            }
        }


        NewsListBean.BodyEntity.DataEntity dataEntity = mNewLists.get(position);


        String publicTime = dataEntity.getPublicTime();
        isLoadTime = MoudleControlUtils.isNeedView(mContext, AppConfig.MODEL_NEWS_PUBLIC_TIME);
        String resultPublicTime = null;
        if (publicTime == null) {
            resultPublicTime = "";
        } else {
            if (isLoadTime) {
                resultPublicTime = publicTime;
            } else {
                resultPublicTime = publicTime.substring(0, 10);
            }


        }




        boolean haveChanged = SPUtils.getBooleanType(mContext, Constant.IMAGE_SHOW_STATE_CHANGED);
        boolean imageState = SPUtils.getBooleanType(mContext, Constant.IMAGE_SHOW_STATE);


        // 设置资源
        switch (type) {
            case TYPE_1:
                holder1.type1Title.setText(dataEntity.getTitle());
                holder1.type1Time.setText(resultPublicTime);
                //判断是否显示专题标签
                if (dataEntity.getNewType() == 5) {
                    holder1.type1Lable.setVisibility(View.VISIBLE);
                } else
                    holder1.type1Lable.setVisibility(View.GONE);
                //显示置顶
                if ((dataEntity.getShowPosition() & 8) == 8) {
                    holder1.type1Lable3.setVisibility(View.VISIBLE);
                } else
                    holder1.type1Lable3.setVisibility(View.GONE);
                //显示广告
                if (dataEntity.getNewType() == 99) {
                    holder1.type1Lable2.setVisibility(View.VISIBLE);
                } else
                    holder1.type1Lable2.setVisibility(View.GONE);
                break;
            case TYPE_2:
                holder2.type2Title.setText(dataEntity.getTitle());
                holder2.type2Time.setText(resultPublicTime);
                if (dataEntity.getNewType() == 99) {
                    holder2.type2Lable2.setVisibility(View.VISIBLE);
                } else
                    holder2.type2Lable2.setVisibility(View.GONE);
                //判断是否显示专题标签
                if (dataEntity.getNewType() == 5) {
                    holder2.type2Lable.setVisibility(View.VISIBLE);
                } else
                    holder2.type2Lable.setVisibility(View.GONE);
                //判断是否显示置顶
                if ((dataEntity.getShowPosition() & 8) == 8) {
                    holder2.type2Lable3.setVisibility(View.VISIBLE);
                } else
                    holder2.type2Lable3.setVisibility(View.GONE);
                if (haveChanged) {
                    //判断是否显示图片
                    if (imageState) {
                        holder2.ivtype2Img.setVisibility(View.VISIBLE);
                        Glide.with(mContext).load(dataEntity.getThumbPath()).into(holder2.ivtype2Img);
                    } else {
                        holder2.ivtype2Img.setVisibility(View.GONE);
                    }
                } else {
                    Glide.with(mContext).load(dataEntity.getThumbPath()).into(holder2.ivtype2Img);
                    holder2.ivtype2Img.setVisibility(View.VISIBLE);
                }


                break;
            case TYPE_3:
                holder3.type3Title.setText(dataEntity.getTitle());
                holder3.type3Time.setText(resultPublicTime);
                if (dataEntity.getNewType() == 99) {
                    holder3.type3Lable2.setVisibility(View.VISIBLE);
                } else
                    holder3.type3Lable2.setVisibility(View.GONE);
                //判断是否显示专题标签
                if (dataEntity.getNewType() == 5) {
                    holder3.type3Lable.setVisibility(View.VISIBLE);
                } else
                    holder3.type3Lable.setVisibility(View.GONE);
                //显示置顶
                if ((dataEntity.getShowPosition() & 8) == 8) {
                    holder3.type3Lable3.setVisibility(View.VISIBLE);
                } else
                    holder3.type3Lable3.setVisibility(View.GONE);
                //判断是否显示图片
                if (haveChanged) {
                    //判断是否显示图片
                    if (imageState) {
                        holder3.ivtype3Img.setVisibility(View.VISIBLE);
                        Glide.with(mContext).load(dataEntity.getThumbPath()).into(holder3.ivtype3Img);
                    } else {
                        holder3.ivtype3Img.setVisibility(View.GONE);
                    }
                } else {
                    Glide.with(mContext).load(dataEntity.getThumbPath()).into(holder3.ivtype3Img);
                    holder3.ivtype3Img.setVisibility(View.VISIBLE);
                }


                break;
            case TYPE_4:
                holder4.type4Title.setText(dataEntity.getTitle());
                holder4.type4Time.setText(resultPublicTime);
                String imageUrl = dataEntity.getThumbPath();
                ArrayList<String> paths = new ArrayList<>();
                if (!TextUtils.isEmpty(imageUrl)) {
                    String[] imgs = imageUrl.split(",");
                    for (int i = 0; i < imgs.length; i++) {
                        paths.add(imgs[i]);
                    }
                }
                if (dataEntity.getNewType() == 99) {
                    holder4.type4Lable2.setVisibility(View.VISIBLE);
                } else
                    holder4.type4Lable2.setVisibility(View.GONE);
                //判断是否显示专题标签
                if (dataEntity.getNewType() == 5) {
                    holder4.type4Lable.setVisibility(View.VISIBLE);
                } else
                    holder4.type4Lable.setVisibility(View.GONE);
                //显示置顶
                if ((dataEntity.getShowPosition() & 8) == 8) {
                    holder4.type4Lable3.setVisibility(View.VISIBLE);
                } else
                    holder4.type4Lable3.setVisibility(View.GONE);
                if (haveChanged) {
                    if (imageState) {
                        holder4.ivtype4Img1.setVisibility(View.VISIBLE);
                        holder4.ivtype4Img2.setVisibility(View.VISIBLE);
                        holder4.ivtype4Img3.setVisibility(View.VISIBLE);
                        holder4.llThreeImage.setVisibility(View.VISIBLE);
                        if (paths.size() > 0) {
                            Glide.with(mContext).load(paths.get(0).toString()).into(holder4.ivtype4Img1);
                            Glide.with(mContext).load(paths.get(1).toString()).into(holder4.ivtype4Img2);
                            Glide.with(mContext).load(paths.get(2).toString()).into(holder4.ivtype4Img3);
                        }
                        //判断显示图集标签
                        if (dataEntity.getNewType() == 4) {
                            holder4.llImgthrumb.setVisibility(View.VISIBLE);
                            holder4.tvImgthrumbNum.setText(dataEntity.getSecretStatus() + "");
                        } else {
                            holder4.llImgthrumb.setVisibility(View.GONE);
                        }
                    } else {
                        holder4.ivtype4Img1.setVisibility(View.GONE);
                        holder4.ivtype4Img2.setVisibility(View.GONE);
                        holder4.ivtype4Img3.setVisibility(View.GONE);
                        holder4.llImgthrumb.setVisibility(View.GONE);
                        holder4.llThreeImage.setVisibility(View.GONE);
                    }
                } else {
                    if (paths.size() > 0) {
                        Glide.with(mContext).load(paths.get(0).toString()).into(holder4.ivtype4Img1);
                        Glide.with(mContext).load(paths.get(1).toString()).into(holder4.ivtype4Img2);
                        Glide.with(mContext).load(paths.get(2).toString()).into(holder4.ivtype4Img3);
                        holder4.ivtype4Img1.setVisibility(View.VISIBLE);
                        holder4.ivtype4Img2.setVisibility(View.VISIBLE);
                        holder4.ivtype4Img3.setVisibility(View.VISIBLE);
                    }
                }
                break;
            case TYPE_5:
                holder5.type5Title.setText(dataEntity.getTitle());
                holder5.type5Time.setText(resultPublicTime);
                //判断是否显示专题标签
                if (dataEntity.getNewType() == 5) {
                    holder5.type5Lable.setVisibility(View.VISIBLE);
                } else
                    holder5.type5Lable.setVisibility(View.GONE);
                if (dataEntity.getNewType() == 99) {
                    holder5.type5Lable2.setVisibility(View.VISIBLE);
                } else
                    holder5.type5Lable2.setVisibility(View.GONE);
                //显示置顶
                if ((dataEntity.getShowPosition() & 8) == 8) {
                    holder5.type5Lable3.setVisibility(View.VISIBLE);
                } else
                    holder5.type5Lable3.setVisibility(View.GONE);
                //判断是否显示图片
                if (haveChanged) {
                    //判断是否显示图片
                    if (imageState) {
                        holder5.ivtype5Img.setVisibility(View.VISIBLE);
                        Glide.with(mContext).load(dataEntity.getThumbPath()).into(holder5.ivtype5Img);
                    } else {
                        holder5.ivtype5Img.setVisibility(View.GONE);
                    }
                } else {
                    Glide.with(mContext).load(dataEntity.getThumbPath()).into(holder5.ivtype5Img);
                    holder5.ivtype5Img.setVisibility(View.VISIBLE);
                }
                break;
            case TYPE_6:
                ScreenUtils.setNine_Sixteenth(mContext, holder6.jcVideoPlayer.thumbImageView);
                ScreenUtils.setNine_Sixteenth(mContext, holder6.jcVideoPlayer);
                //假数据,待替换
                holder6.jcVideoPlayer.setUp("http://115.182.42.91/image/party_uploadfiles/video/2017_08_11_13/0cc2d4f0-73d9-4f99-97c1-32a6778a9736.mp4", JCVideoPlayer.SCREEN_LAYOUT_LIST, dataEntity.getTitle());
                holder6.jcVideoPlayer.getPreviewImage(mContext, dataEntity.getThumbPath());
                holder6.jcVideoPlayer.setOnTitleBarRightBtnClickListener(() -> {
                    NewsListBean.BodyEntity.DataEntity dataEntity1 = mNewLists.get(position);
                    Bundle bundle = new Bundle();
                    String newsUrl = NewHelpUtils.getNewsUrlByNewsType(mContext, dataEntity1.getNewType(), dataEntity1.getContentId(), SPUtils.getStringType(mContext, Constants.USER_LOGIN_TOKEN));
                    bundle.putString(Constants.NEW_DETAIL_URL, newsUrl);
                    bundle.putSerializable(Constants.NEW_DETAIL_SHARE_BEAN, dataEntity1);
                    AppManager.getInstance().jumpActivity((Activity) mContext, VideoActivity.class, bundle);
                });
                break;
        }


        return convertView;
    }


    public void updateDatas(List<NewsListBean.BodyEntity.DataEntity> publicList) {
        if (publicList.size() != 0) {
            mNewLists.clear();
            mNewLists.addAll(publicList);
        }
        notifyDataSetChanged();
    }




    class TypeViewHolder1 {
        TextView type1Title, type1Time, type1Lable, type1Lable2, type1Lable3;
    }


    class TypeViewHolder2 {
        TextView type2Title, type2Time, type2Lable, type2Lable2, type2Lable3;
        ImageView ivtype2Img;
    }


    class TypeViewHolder3 {
        TextView type3Title, type3Time, type3Lable, type3Lable2, type3Lable3;
        ImageView ivtype3Img;
    }


    class TypeViewHolder4 {
        TextView type4Title, type4Time, type4Lable, tvImgthrumbNum, type4Lable2, type4Lable3;
        ImageView ivtype4Img1, ivtype4Img2, ivtype4Img3;
        LinearLayout llImgthrumb, llThreeImage;
    }


    class TypeViewHolder5 {
        TextView type5Title, type5Time, type5Lable, type5Lable2, type5Lable3;
        ImageView ivtype5Img;
    }


    class TypeViewHolder6 {
        JCVideoPlayerStandard jcVideoPlayer;
    }
}







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值