recyclerview多种布局,类似于今日头条的那种,但不包含广告哦

遇到这种的要怎么做呢?

哈哈,那肯定从适配器开始咯

item.getImagecount()这个可以跟后台商量具体怎么写这个方法

 @Override
    public int getItemViewType(int position) {
        if(headerView ==null){
        int type = super.getItemViewType(position);
        if(type !=0){
            return type;
        }
        Zxnr_all.DataBean item = getItem(position);//从后台获取的数据
        if(item == null || "".equals(item)){
            return 0;
        }
        if(item.getImagecount() ==0 ||"".equals(item.getImagecount())){
            return 0;
        }

        if(item.getImagecount() ==5){
            type = TYPE_RIGHT_IMAGE;
            return type;
        }
        else{
            type = TYPE_THREE_IMAGE;
            return type;
        }
        }
        if (position == 0) return ITEM_TYPE_HEADER;
        Zxnr_all.DataBean item = getItem(position-1);
        if(item == null || "".equals(item)){
            return 0;
        }
        if(item.getImagecount() ==0 ||"".equals(item.getImagecount())){
            return 0;
        }

        if(item.getImagecount() ==1){
            return  TYPE_THREE_IMAGE;
        }
        else {
            return TYPE_RIGHT_IMAGE;
        }
        }

对了,就是这个getviewtype方法,这里面可以进行适配器中有一张或者三张图片样式

接下来就是初始化viewholder啦

    @Override
    public RecyclerView.ViewHolder getItemViewHolder(ViewGroup parent, int viewType) {
        //创建不同的 ViewHolder
        View view ;
        if (headerView != null && viewType == ITEM_TYPE_HEADER)
            return new RightImageHolder(headerView);
        //根据viewtype来创建条目
        if (viewType == TYPE_THREE_IMAGE) {
            view =View.inflate(parent.getContext(),R.layout.item_three_img,null);
            return new ThreeImageHolder(view);
//            view =View.inflate(parent.getContext(),R.layout.item_right_img,null);
                TextView shortTitle = (TextView) view.findViewById(R.id.shorttitle);
//            return new RightImageHolder(view);
        }
        else{

            view =View.inflate(parent.getContext(),R.layout.item_right_img,null);
            return new RightImageHolder(view);
        }
//        else if (viewType ==ITEM_TYPE_HEADER) {
//            view =View.inflate(parent.getContext(),R.layout.rv_header,null);
//            return new HeaderViewHolder(view);
//        }
//        else {
//        }
    }
@Override
public void onBind(RecyclerView.ViewHolder holder1, int position) {
if (getItemViewType(position) == ITEM_TYPE_HEADER)
            return;
        final int pos = getRealPosition(holder1);
        final Zxnr_all.DataBean item = getItem(pos);
        switch (getItemViewType(position)) {
            case TYPE_RIGHT_IMAGE:
                RightImageHolder holder = (RightImageHolder) holder1;
                holder.tv_shorttitle.setTextSize(context.getSharedPreferences(Constant.TEXT_SIZE1, context.MODE_PRIVATE).getInt(Constant
                        .TEXTSIZE_INTEGER, Constant.TEXTSIZE_CENTRE));
                if(item ==null ||"".equals(item)){
                    return ;
                }
                if (!TextUtils.isEmpty(item.getPubdate())) {
                    String timeStampAgo = TimeUtil.getTimeStampAgo(item.getPubdate());
                    holder.tv_readtime.setText(timeStampAgo);//时间转化
                }
//                boolean isCheck = allBook.get(pos).getIsCheck();
//                if(isCheck){
//                    holder.tv_shorttitle.setTextColor(getContext().getResources().getColor(R.color.line));
//                }
//                else {
//                    holder.tv_shorttitle.setTextColor(getContext().getResources().getColor(R.color.zxnr_list_shorttitle));
//                }
                showImg(holder.img3,item.getImages().get(0));
                holder.tv_shorttitle.setText(item.getTitle());
                holder.tv_readtcount.setText(item.getClick());

                break;
            case TYPE_THREE_IMAGE:
                ThreeImageHolder imageHolder = (ThreeImageHolder) holder1;
//                Log.e("item",""+item.toString());
                imageHolder.tv_shorttitle1.setTextSize(context.getSharedPreferences(Constant.TEXT_SIZE1, context.MODE_PRIVATE).getInt(Constant
                        .TEXTSIZE_INTEGER, Constant.TEXTSIZE_CENTRE));
                if(item ==null ||"".equals(item)){
                    return ;
                }
                if (!TextUtils.isEmpty(item.getPubdate())) {
                    String timeStampAgo = TimeUtil.getTimeStampAgo(item.getPubdate());
                    imageHolder.tv_readtime1.setText(timeStampAgo);//时间转化
                }
                showImg(imageHolder.img,item.getImages().get(0));
                if(item.getImages() !=null && item.getImages().size()>1){
//            listTitle1.add(item.getImages().get(position));
                    showImg(imageHolder.img1,item.getImages().get(1));
                    showImg(imageHolder.img2,item.getImages().get(2));
                }
//                if(allBook.get(pos) ==null &&allBook.size()==0){
//                    return;
//                }
//                boolean isCheck1 = allBook.get(pos).getIsCheck();
//                if(isCheck1){
//                    imageHolder.tv_shorttitle1.setTextColor(getContext().getResources().getColor(R.color.line));
//                }
//                else {
//                    imageHolder.tv_shorttitle1.setTextColor(getContext().getResources().getColor(R.color.zxnr_list_shorttitle));
//                }

                imageHolder.tv_shorttitle1.setText(item.getTitle());
                imageHolder.tv_readtcount1.setText(item.getClick());
//                imageHolder.tv_title.setText(currNM.title);
//                imageHolder.tv_author.setText(currNM.source);
//                imageHolder.tv_zan.setText(currNM.replyCount + "跟帖");
//                Glide.with(mContext).load(currNM.imgsrc).into(imageHolder.iv_item_news_detail_rv);
//                Log.e("imageHolderleft",""+currNM.imgsrc);
//
                break;
        }

大家如果不需要header的话可以去掉就可以啦,想对应的position就不需要减1啦~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值