XRecyclerView下拉刷新,上拉加载

来源:互联网 发布:qt淘宝互刷平台2017 编辑:程序博客网 时间:2024/06/05 19:46

在RecyclerView的上拉加载使用会比较麻烦,而XRecyclerView非常方便的决解了这些问题,都已经封装好了,我们只需要调用方法就OK了。下面是XRecyclerView的使用。

因为接口原因这里我只做了一个下拉刷新

因为接口原因这里我只做了一个下拉刷新

配置build.gradle文件中直接添加依赖

   compile 'com.jcodecraeer:xrecyclerview:1.3.2'   

在布局中:

 <com.jcodecraeer.xrecyclerview.XRecyclerView        android:layout_width="match_parent"        android:id="@+id/xre_xrv"        android:layout_height="match_parent">    </com.jcodecraeer.xrecyclerview.XRecyclerView>

在Activity中:

public class RxActivity extends AppCompatActivity {   private XRecyclerView xr;    private List<String > list=new ArrayList<>();    //获取数据的开始    private int curr;    private XRAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_rx);        //初始化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=0;                list.clear();                getData(API.TYPE_HOME,curr);                xr.refreshComplete();            }        //加载            @Override            public void onLoadMore() {             /*   curr++;                getData(API.TYPE_HOME,curr);                xr.loadMoreComplete();*/            }        });        getData(API.TYPE_HOME,1);    }   //初始化数据    private void getData(String url,int curr){        OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<HomeBean>() {            @Override            public void onUi(HomeBean homeBean) {                homeBean.getMsg();                //关联适配器,并将集合传入适配器                XRAdapter  mxradapter=new XRAdapter(RxActivity.this,homeBean.getData());                xr.setAdapter(mxradapter);            }            @Override            public void onFailed(Call call, IOException e) {            }        });    }}

这里是一个RecyclerView的多条目加载
适配器:

public class XRAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{    HomeBean.DataBean list;    Context mcontext;    ArrayList  mlist;    //枚举类型      private  enum  Item_Type{          Typeone ,Typetwo,Typethree,Typefour    }    public XRAdapter(Context context, HomeBean.DataBean data) {        this.mcontext=context;        this.list=data;    }    /**     * 创建ViewHolder     *     * @param parent     * @param viewType :不同ItemView的类型     * @return     */    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if (viewType == Item_Type.Typeone.ordinal()) {            View 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()) {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_b, null);            ViewHolderB viewHolder = new ViewHolderB(mView);            return viewHolder;        } else if (viewType == Item_Type.Typethree.ordinal()) {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_c, null);            ViewHolderC viewHolder = new ViewHolderC(mView);            return viewHolder;        }else if (viewType == Item_Type.Typefour.ordinal()) {            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_d, null);            ViewHolderD viewHolder = new ViewHolderD(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.getAd1().size();i++){                mlist.add(list.getAd1().get(i).getImage());            }            //设置图片加载器            ((ViewHolderA) holder).mbanner.setImageLoader(new GlideImaGlideImageLoader());            ((ViewHolderA) holder).mbanner.setImages(mlist);            ((ViewHolderA) holder).mbanner.start();        } else if (holder instanceof ViewHolderB) {           ((ViewHolderB) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name() + "------样式二");        } else if (holder instanceof ViewHolderC) {            ((ViewHolderC) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式三");        }else if (holder instanceof ViewHolderD) {            ((ViewHolderD) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式4");        }    }    @Override    public int getItemCount() {        return 4;    }    //返回值赋值给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 == 2) {            return Item_Type.Typethree.ordinal();        }else if (position == 3) {            return Item_Type.Typefour.ordinal();        }        return -1;    }    class ViewHolderA extends RecyclerView.ViewHolder {        public Banner mbanner;        public ViewHolderA(View itemView) {            super(itemView);            mbanner = (Banner) itemView.findViewById(R.id.mybanner);        }    }    class ViewHolderB extends RecyclerView.ViewHolder {        public TextView text;        public ViewHolderB(View itemView) {            super(itemView);            text = (TextView) itemView.findViewById(R.id.tvb);        }    }    class ViewHolderC extends RecyclerView.ViewHolder {        public TextView text;        public ViewHolderC(View itemView) {            super(itemView);            text = (TextView) itemView.findViewById(R.id.tvc);        }    }    class ViewHolderD extends RecyclerView.ViewHolder {        public TextView text;        public ViewHolderD(View itemView) {            super(itemView);            text = (TextView) itemView.findViewById(R.id.tvd);        }    }}
原创粉丝点击