XRecyclerView 的简单使用
来源:互联网 发布:linux fstable 编辑:程序博客网 时间:2024/06/06 01:10
首先是导入依赖
compile 'com.jcodecraeer:xrecyclerview:1.3.2'compile 'com.youth.banner:banner:1.4.9'compile 'com.github.bumptech.glide:glide:3.7.0'compile files('libs/universal-image-loader-1.9.3.jar')
其次xml的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xre_xrv" android:layout_width="match_parent" android:layout_height="match_parent"> </com.jcodecraeer.xrecyclerview.XRecyclerView></LinearLayout>
activity.java的内容
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;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 android.widget.Toast;import com.bwie.test.utils.API;import com.bwie.test.utils.GlideImaGlideImageLoader;import com.bwie.test.utils.GsonObjectCallback;import com.bwie.test.utils.OkHttp3Utils;import com.jcodecraeer.xrecyclerview.XRecyclerView;import com.nostra13.universalimageloader.core.ImageLoader;import com.youth.banner.Banner;import com.youth.banner.loader.ImageLoaderInterface;import java.io.IOException;import java.util.ArrayList;import java.util.List;import okhttp3.Call;public class Fragment_one extends Fragment{ View view; private XRecyclerView xr; private List<String> list = new ArrayList<>(); //获取数据的开始 private int curr; private XRAdapter adapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_one,null); //初始化xr xr = (XRecyclerView) view.findViewById(R.id.xre_xrv); //加布局管理器 LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); xr.setLayoutManager(layoutManager); 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.refreshComplete();*/ } }); getData(API.TYPE_HOME, 1); return view; } //初始化数据 private void getData(String url, int curr) { OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<HomeBean>() { @Override public void onUi(HomeBean homeBean) { List<HomeBean.SongListBean> song_list = homeBean.getSong_list(); homeBean.getError_code(); XRAdapter mxradapter = new XRAdapter(song_list,getActivity()); xr.setAdapter(mxradapter); } @Override public void onFailed(Call call, IOException e) { } }); }}
数据解析 就不写了 然后是适配器的配置
import android.content.Context;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 com.bwie.test.utils.GlideImaGlideImageLoader;import com.youth.banner.Banner;import java.util.ArrayList;import java.util.List;public class XRAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { List<HomeBean.SongListBean> song_list; Context mcontext; ArrayList mlist; ArrayList<Mynews> list_news; RecyclelistAdapter adapter; //枚举类型 private enum Item_Type { Typeone, Typetwo } public XRAdapter(List<HomeBean.SongListBean> song_list, Context mcontext) { this.song_list = song_list; this.mcontext = mcontext; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == Item_Type.Typeone.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_banner_item, null); ViewHolderA viewHolder = new ViewHolderA(mView); return viewHolder; } else{ View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_list_item, null); ViewHolderB viewHolder = new ViewHolderB(mView); return viewHolder; } } /** * 绑定数据:可以直接拿到已经绑定控件的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<song_list.size(); i++){ mlist.add(song_list.get(i).getPic_big()); } //设置图片加载器 ((ViewHolderA) holder).mbanner.setImageLoader(new GlideImaGlideImageLoader()); ((ViewHolderA) holder).mbanner.setImages(mlist); ((ViewHolderA) holder).mbanner.start(); } else if (holder instanceof ViewHolderB) { list_news = new ArrayList<Mynews>(); for (int i = 0; i<song_list.size(); i++){ list_news.add(new Mynews(song_list.get(i).getPic_big(),song_list.get(i).getAlbum_title())); } ((ViewHolderB) holder).recyclerViewList.setLayoutManager(new LinearLayoutManager(mcontext)); ((ViewHolderB) holder).recyclerViewList.setAdapter(new RecyclelistAdapter(mcontext,list_news)); } } @Override public int getItemCount() { return song_list.size(); } @Override public int getItemViewType(int position) { if (position == 0) { return 0; } else { return 1; } } class ViewHolderA extends RecyclerView.ViewHolder { public Banner mbanner; public ViewHolderA(View itemView) { super(itemView); mbanner = (Banner) itemView.findViewById(R.id.banner); } } class ViewHolderB extends RecyclerView.ViewHolder { public RecyclerView recyclerViewList; public ViewHolderB(View itemView) { super(itemView); recyclerViewList = (RecyclerView) itemView.findViewById(R.id.recycleList); } }}这里面有两个布局 一个是recycle_banner_item
<com.youth.banner.Banner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="200dp"></com.youth.banner.Banner>另一个是recycle_list_item
<android.support.v7.widget.RecyclerView android:id="@+id/recycleList" android:layout_width="match_parent" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>这个RecyclerView 还有一个适配器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.nostra13.universalimageloader.core.ImageLoader;import java.util.ArrayList;public class RecyclelistAdapter extends RecyclerView.Adapter<RecyclelistAdapter.ViewHolder>{ ArrayList<Mynews> list; Context context; public RecyclelistAdapter(Context context, ArrayList<Mynews> list) { this.context = context; this.list = list; } @Override public RecyclelistAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewHolder holder = new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_home, parent, false)); return holder; } @Override public void onBindViewHolder(RecyclelistAdapter.ViewHolder holder, int position) { holder.tv.setText(list.get(position).getTitle()); String imgURL = list.get(position).getPic_url(); ImageLoader instance = ImageLoader.getInstance(); instance.displayImage(imgURL,holder.img); } @Override public int getItemCount() { return list.size(); } class ViewHolder extends RecyclerView.ViewHolder{ ImageView img; TextView tv; public ViewHolder(View view) { super(view); img = (ImageView) view.findViewById(R.id.img); tv = (TextView) view.findViewById(R.id.tv); } }}这个里面的布局是<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp"/></LinearLayout>
这个就是 XRecyclerView的简单使用, 里面是一个轮播图和一个网络请求数据
阅读全文
1 0
- XRecyclerView 的简单使用
- Android XRecyclerview的简单使用步骤
- XrecyclerView简单使用
- XRecyclerView的使用
- XRecyclerView的使用
- XRecyclerView的使用
- Xrecyclerview的使用
- XRecyclerView与轮播图的使用
- XRecyclerView的使用下拉刷新
- XRecyclerView使用
- XRecyclerView的简单使用与图片拉动字体缩放效果的实现
- XRecyclerView的使用&ListView|XRecyclerView有header时Position不对问题
- Android XRecyclerView最简单的item点击事件处理
- XRecyclerView上下拉使用
- XRecyclerView上下拉使用
- XRecyclerView上下拉使用
- 支持下拉刷新上拉加载xrecyclerview的基本使用
- Xrecyclerview的使用(上拉刷新,下拉加载)
- leetcode---merge-k-sorted-lists---链表
- 浮动和绝对定位对布局的影响
- Resource路径通配符classpath和classpath*的区别
- 平安科技18群
- 用Scholar one 投稿过程
- XRecyclerView 的简单使用
- redis数据类型
- 程序员常用网址收藏
- VS c++ soap 获取WebServiece的错误记录 实质错误是errno的错误
- Android app、process和task的区别
- 装了双系统之后,进不去U盘启动项,进不去PE系统
- viewpage+fragment
- Angular订单操作
- 扫雷小游戏