RecyclerView添加头部

来源:互联网 发布:手机版刷屏软件 编辑:程序博客网 时间:2024/05/17 08:31

一、Adapter中数据

package com.example.jiangshuncongykcs.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import com.example.jiangshuncongykcs.JsonBean;import com.example.jiangshuncongykcs.R;import java.util.List;/** * Created by  */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.mViewHolder> {    private List<JsonBean.DataBean> list;    private Context context;    private View mHeaderView;    public static final int TYPE_HEADER = 0;    public static final int TYPE_NORMAL = 1;    public MyAdapter(List<JsonBean.DataBean> list, Context context) {        this.list = list;        this.context = context;    }    @Override    public mViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if(mHeaderView != null && viewType == TYPE_HEADER) return new mViewHolder(mHeaderView);        View inflate = View.inflate(context, R.layout.item, null);        mViewHolder holder = new mViewHolder(inflate);        return holder;    }    @Override    public void onBindViewHolder(mViewHolder holder, int position) {        JsonBean.DataBean dataBean = list.get(position);        if(getItemViewType(position) == TYPE_HEADER) return;        if(holder instanceof mViewHolder) {            Glide.with(context).load(dataBean.getUserImg()).into(holder.iv_icon);            holder.tv_msg.setText(dataBean.getIntroduction());        }    }    public void setHeaderView(View headerView) {        mHeaderView = headerView;        notifyItemInserted(0);    }    public View getHeaderView() {        return mHeaderView;    }    @Override    public int getItemCount() {        return list.size();    }    @Override    public int getItemViewType(int position) {        if(mHeaderView == null) return TYPE_NORMAL;        if(position == 0) return TYPE_HEADER;        return TYPE_NORMAL;    }    class mViewHolder extends RecyclerView.ViewHolder{        ImageView iv_icon;        TextView tv_msg;        public mViewHolder(View itemView) {            super(itemView);            iv_icon = itemView.findViewById(R.id.iv_icon);            tv_msg = itemView.findViewById(R.id.tv_msg);        }    }}
二、Fragment中

package com.example.jiangshuncongykcs;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v7.widget.DividerItemDecoration;import android.support.v7.widget.LinearLayoutManager;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.example.jiangshuncongykcs.adapter.MyAdapter;import com.google.gson.Gson;import com.jcodecraeer.xrecyclerview.XRecyclerView;import com.stx.xhb.xbanner.XBanner;import com.stx.xhb.xbanner.transformers.Transformer;import java.io.IOException;import java.util.ArrayList;import java.util.List;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * Created by 蒋順聪 on 2017/10/25. */public class Fragment1 extends Fragment{    private View view;    private XBanner vp_viewpager;    private List<String> list = new ArrayList<>();    private XRecyclerView rv_recyclerview;    private int page = 1;    List<JsonBean.DataBean> data2 = new ArrayList<>();    private MyAdapter adapter;    private View view2;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = View.inflate(getContext(), R.layout.fragment1_layout, null);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        initview();        initdata();        // 为XBanner绑定数据        vp_viewpager.setData(list, null);        // XBanner适配数据        vp_viewpager.setmAdapter(new XBanner.XBannerAdapter() {            @Override            public void loadBanner(XBanner banner, View view, int position) {                Glide.with(getContext()).load(list.get(position)).into((ImageView) view);            }        });        // 设置XBanner的页面切换特效        vp_viewpager.setPageTransformer(Transformer.Default);        // 设置XBanner页面切换的时间,即动画时长        vp_viewpager.setPageChangeDuration(500);        initmsg(page);    }    private void initmsg(int page2) {        OkHttpClient intance = OkHttpUtils.getIntance();        FormBody.Builder builder = new FormBody.Builder();        builder.add("sign","C7548DE604BCB8A17592EFB9006F9265");        builder.add("pageSize","20");        builder.add("gender","2");        builder.add("ts","1871746850");        builder.add("page",page2+"");        Request request = new Request.Builder().url(API.url).post(builder.build()).build();        intance.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                System.out.println("请求出错了");            }            @Override            public void onResponse(Call call, Response response) throws IOException {                if(response != null && response.isSuccessful()){                    String string = response.body().string();                    JXJson(string);                }            }        });    }    private void JXJson(String string) {        JsonBean jsonBean = new Gson().fromJson(string, JsonBean.class);        List<JsonBean.DataBean> data = jsonBean.getData();        data2.addAll(data);        getActivity().runOnUiThread(new Runnable() {            @Override            public void run() {                if(adapter == null){                    adapter = new MyAdapter(data2,getContext());                    rv_recyclerview.setAdapter(adapter);                }else{                    adapter.notifyDataSetChanged();                }                //为Recycler添加头部                setHeader(rv_recyclerview);            }        });    }    private void initdata() {        list.add("http://img3.imgtn.bdimg.com/it/u=1875076909,3610813998&fm=27&gp=0.jpg");        list.add("http://img5.imgtn.bdimg.com/it/u=2832476711,2379932980&fm=27&gp=0.jpg");        list.add("http://img5.imgtn.bdimg.com/it/u=1944582709,2686578056&fm=27&gp=0.jpg");        list.add("http://img3.imgtn.bdimg.com/it/u=1708842930,3481574449&fm=27&gp=0.jpg");    }    private void initview() {        view2 = View.inflate(getContext(), R.layout.addhead, null);        vp_viewpager = view2.findViewById(R.id.vp_viewpager);        rv_recyclerview = view.findViewById(R.id.rv_recyclerview);        rv_recyclerview.setLayoutManager(new LinearLayoutManager(getContext()));        rv_recyclerview.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL));        rv_recyclerview.setLoadingListener(new XRecyclerView.LoadingListener() {            @Override            public void onRefresh() {                //刷新操作                data2.clear();                adapter = null;                page = 1;                initmsg(page);                rv_recyclerview.refreshComplete();            }            @Override            public void onLoadMore() {                //加载更多的操作                page++;                initmsg(page);                rv_recyclerview.loadMoreComplete();            }        });    }    //添加头部的方法    private void setHeader(XRecyclerView view) {        adapter.setHeaderView(view2);    }}