xrecyclerview实现两种多条目

来源:互联网 发布:java项目开发文档模板 编辑:程序博客网 时间:2024/06/05 07:54

xrecyclerview的依赖包

compile 'com.jcodecraeer:xrecyclerview:1.3.2'


主线程


public class MainActivity extends AppCompatActivity {    private XRecyclerView xr;    private List<HomeBean.SongListBean> list=new ArrayList<>();    //获取数据的开始    private int curr=1;    private XRAdapter adapter;    private String mpath="http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=2&size=10&offset=0";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化xr        xr= (XRecyclerView) findViewById(R.id.xre_xrv);        //加布局管理器        LinearLayoutManager layoutManager=new LinearLayoutManager(this);        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);        xr.setLayoutManager(layoutManager);        //允许刷新加载        xr.setPullRefreshEnabled(true);        xr.setLoadingMoreEnabled(true);        xr.setLoadingListener(new XRecyclerView.LoadingListener() {            //刷新            @Override            public void onRefresh() {                curr=1;                list.clear();                getData(curr);                xr.refreshComplete();            }            //加载            @Override            public void onLoadMore() {                curr++;                getData(curr);                xr.loadMoreComplete();            }        });        curr=1;        getData(1);        xr.setLayoutManager(new LinearLayoutManager(MainActivity.this));    }    //初始化数据    private void getData(int curr){        OkHttp3Utils.getInstance().doGet(mpath, new GsonObjectCallback<HomeBean>() {            @Override            public void onUi(HomeBean homeBean) {                for (int i = 0 ; i < homeBean.getSong_list().size() ; i++){                    list.add(homeBean.getSong_list().get(i));                }                //关联适配器,并将集合传入适配器                XRAdapter  mxradapter=new XRAdapter(list,MainActivity.this);                xr.setAdapter(mxradapter);            }            @Override            public void onFailed(Call call, IOException e) {            }        });    }}
适配器
public class XRAdapter extends RecyclerView.Adapter {    private List<HomeBean.SongListBean> list;    private Context context;    public XRAdapter(List<HomeBean.SongListBean> list, Context context) {        this.list = list;        this.context = context;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        switch (viewType){            case 0:                bannerViewholder holder1 = new bannerViewholder(LayoutInflater.from(                        context).inflate(R.layout.item_banner, parent, false));                return holder1;            case 1:                MaxViewholder holder2 = new MaxViewholder(LayoutInflater.from(                        context).inflate(R.layout.item_max, parent, false));                return holder2;        }        return null;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        switch (getItemViewType(position)){            case 0:                bannerViewholder bannerholder= (bannerViewholder) holder;                ArrayList<String> mlist = new ArrayList<>();                for (int i=0;i<list.size();i++){                    String img = list.get(i).getPic_big();                    mlist.add(img);                    if (mlist.size() == 5){                        break;                    }                }                bannerholder.banner.setImageLoader(new GlideImaGlideImageLoader());                bannerholder.banner.setImages(mlist);                bannerholder.banner.start();                break;            case 1:                MaxViewholder maxholder= (MaxViewholder) holder;                maxholder.tv_title.setText(list.get(position).getAlbum_title());                String img = list.get(position).getPic_small();                ImageLoader.getInstance().displayImage(img,((MaxViewholder) holder).imgshow);                break;        }    }    @Override    public int getItemCount() {        return list.size();    }    class MaxViewholder extends RecyclerView.ViewHolder{        TextView tv_title;        ImageView imgshow;        public MaxViewholder(View itemView) {            super(itemView);            tv_title = itemView.findViewById(R.id.tv_title);            imgshow = itemView.findViewById(R.id.imgshow);        }    }    class bannerViewholder extends RecyclerView.ViewHolder{        private Banner banner;        public bannerViewholder(View itemView) {            super(itemView);            banner=itemView.findViewById(R.id.mybanner);        }    }    @Override    public int getItemViewType(int position) {        if(position==0){            return 0;        }else{            return 1;        }    }}
主布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.baway.zhouzipeng.xrecyclerviewdemo1025.MainActivity">    <com.jcodecraeer.xrecyclerview.XRecyclerView        android:layout_width="match_parent"        android:id="@+id/xre_xrv"        android:layout_height="match_parent">    </com.jcodecraeer.xrecyclerview.XRecyclerView></RelativeLayout>
效果布局自己布  简单的上边banner轮播图下边listview