多条目布局的简单使用

首先就是要给他一个布局
package com.five.nsg;


import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.five.R;
import com.five.adapter.NewWord;
import com.five.adapter.XRAdapter;
import com.five.util.API;
import com.five.util.GsonObjectCallback;
import com.five.util.OkHttp3Utils;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.io.IOException;

import okhttp3.Call;


public class Fragment_shou extends Fragment {
    private XRecyclerView recyclerview;

    //获取数据的开始
    private XRAdapter adapter;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_shou, null);
        //初始化xr
        recyclerview= (XRecyclerView) view.findViewById(R.id.id_recyclerview);
        //加布局管理器
        LinearLayoutManager layoutManager=new LinearLayoutManager(getActivity());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerview.setLayoutManager(layoutManager);

        recyclerview.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                recyclerview.refreshComplete();
            }

            @Override
            public void onLoadMore() {
                recyclerview.refreshComplete();
            }
        });
        getDate();
        return view;
    }

    private void getDate() {
        OkHttp3Utils.getInstance().doGet(API.MPATH, new GsonObjectCallback<NewWord>() {
            @Override
            public void onUi(NewWord newWord) {
                XRAdapter  mxradapter=new XRAdapter(getActivity(),newWord.getData());
                recyclerview.setAdapter(mxradapter);
            }
            @Override
            public void onFailed(Call call, IOException e) {

            }
        });
    }
}

大的适配器。。。
package com.five.adapter;


import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.five.R;
import com.five.view.geLoader;

import java.util.ArrayList;

public class XRAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
    NewWord.DataBean list;
    Context mcontext;
    ArrayList mlist;

    //枚举类型
      private  enum  Item_Type{
          Typeone ,Typetwo,Typethree,Typefour,Typefive,Typesix
    }
    public XRAdapter(Context context, NewWord.DataBean data) {
        this.mcontext=context;
        this.list=data;
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View mView=null;
        if (viewType == Item_Type.Typeone.ordinal()) {
            mView= LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_a, null);
            ViewHolderA viewHolder = new ViewHolderA(mView);
            return viewHolder;
        } else if (viewType == Item_Type.Typetwo.ordinal()) {
            mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item_b, null);
            ViewHolderB viewHolder = new ViewHolderB(mView);
            return viewHolder;
        }else if (viewType == Item_Type.Typethree.ordinal()) {
            mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item_c, null);
            ViewHolderC viewHolder = new ViewHolderC(mView);
            return viewHolder;
        }else if (viewType == Item_Type.Typefour.ordinal()) {
            mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item_d, null);
            ViewHolderD viewHolder = new ViewHolderD(mView);
            return viewHolder;
        }else if (viewType == Item_Type.Typefive.ordinal()) {
            mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item_e, null);
            ViewHolderE viewHolder = new ViewHolderE(mView);
            return viewHolder;
        }else if (viewType == Item_Type.Typesix.ordinal()) {
            mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item_f, null);
            ViewHolderF viewHolder = new ViewHolderF(mView);
            return viewHolder;
        }
        return null;
    }

    /**
     * 绑定数据:可以直接拿到已经绑定控件的Viewholder对象
     *
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof ViewHolderA) {
            mlist=new ArrayList();
            for(int i=0;i<list.getDefaultGoodsList().size();i++){
                mlist.add(list.getDefaultGoodsList().get(i).getGoods_img());
            }
            //设置图片加载器
            ((ViewHolderA) holder).mbanner.setImageLoader(new geLoader());
            ((ViewHolderA) holder).mbanner.setImages(mlist);
            ((ViewHolderA) holder).mbanner.start();

        } else if (holder instanceof ViewHolderB) {
            ((ViewHolderB) holder).recyclerViewb.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL));
            ((ViewHolderB) holder).recyclerViewb.setAdapter(new TouAdapter(list.getAd5(),mcontext));
            ((ViewHolderB) holder).countdownView.start(1000000000);
        }else if (holder instanceof ViewHolderC) {
            ((ViewHolderC) holder).recycler.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
            ((ViewHolderC) holder).recycler.setAdapter(new HomeAdapter(list.getAd1(),mcontext));
        }else if (holder instanceof ViewHolderD) {
            ((ViewHolderD) holder).recycler.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
            ((ViewHolderD) holder).recycler.setAdapter(new HomesAdater(mcontext,list.getAd8()));
        }else if (holder instanceof ViewHolderE) {
            ((ViewHolderE) holder).recycler.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL));
            ((ViewHolderE) holder).recycler.setAdapter(new Hua_Shang(mcontext,list.getSubjects()));
        }else if (holder instanceof ViewHolderF) {
            ((ViewHolderF) holder).recycler.setLayoutManager(new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.HORIZONTAL));
            ((ViewHolderF) holder).recycler.setAdapter(new Hua_Xia(mcontext,list.getAd1()));
        }

    }

    @Override
    public int getItemCount() {
        return 6;
    }
    //返回值赋值给onCreateViewHolder的参数 viewType
    @Override
    public int getItemViewType(int position) {
       // return super.getItemViewType(position);

        if (position == 0) {
            return Item_Type.Typeone.ordinal();
        } else if (position == 1) {
            return Item_Type.Typetwo.ordinal();
        }else if (position == 3) {
            return Item_Type.Typethree.ordinal();
        }else if (position == 5) {
            return Item_Type.Typefour.ordinal();
        }else if (position == 2) {
            return Item_Type.Typefive.ordinal();
        }else if (position == 4) {
            return Item_Type.Typesix.ordinal();
        }
        return -1;
    }
}



弄完布局之后重要的就是要怎么用添加适配器给他添加数据,,这里是要显示多条目,,所以在用的时候肯定不是一个布局

这个就是要在里面用到的viewholder,,我这里因为是使用了留个布局所以就建立了留个不同的类






因为里面六个基本都是一样的所以就不附带其他的代码了

这个呢是他们留个里面多条目布局需要用的布局


package com.five.view;

import android.content.Context;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.youth.banner.loader.ImageLoader;
public class geLoader extends ImageLoader {
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        Glide.with(context).load(path).into(imageView);
    }
}


里面基本也都是一样的我就不一一列举了

下面的这些是多条目里面如果是recycle人view那么也要给他们进行一些适配器,,我这里是每个不同的就给了个布局也可以使用同一个适配器,,具体的我就不列举了
废话不多说,,直接看代码
package com.five.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.five.R;

import java.util.List;


public class TouAdapter extends RecyclerView.Adapter<TouAdapter.TouHolder>
{
    Context context;
    List<NewWord.DataBean.Ad5Bean> ad5Bean;

    public TouAdapter(List<NewWord.DataBean.Ad5Bean> ad5Bean, Context context) {
        this.ad5Bean = ad5Bean;
        this.context = context;
    }

    @Override
    public TouHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        TouHolder holders = new TouHolder(LayoutInflater.from(
                context).inflate(R.layout.item_tou, parent,
                false));
        return holders;
    }

    @Override
    public void onBindViewHolder(TouHolder holders, int position) {
        holders.tv.setText(ad5Bean.get(position).getTitle());
        Glide.with(context).load(ad5Bean.get(position).getImage()).into(holders.img);
    }

    @Override
    public int getItemCount() {
        return ad5Bean.size();
    }

    class TouHolder extends RecyclerView.ViewHolder
    {

        TextView tv;
        ImageView img;
        public TouHolder(View view)
        {
            super(view);
            tv = (TextView) view.findViewById(R.id.tou_text);
            img = (ImageView) view.findViewById(R.id.tou_img);
        }
    }
}








这几个一定要注意。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值