您的位置:首页 > 理论基础 > 计算机网络

RecyclerView多条目加载(网络请求数据)

2017-10-25 20:54 639 查看
RecyclerView多条目加载和ListView的多条目加载用法是一样的,代码如下:

1.导入RecyclerView或XRecyclerView的依赖包(自己按照需求导入依赖包,下面RecyclerView可以替换成XRecyclerView)XRecyclerView可以实现上拉加载,下拉刷新,而RecyclerView不可以

//Recyclerview
compile 'com.android.support:recyclerview-v7:22.1.1'
compile 'com.android.support:appcompat-v7:22.1.1'


2.xml的布局文件

<android.support.v7.widget.RecyclerView
android:id="@+id/id_recyclerview"
android:divider="#ffff0000"
android:dividerHeight="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />


3.自己定义多条目的布局

一、Adapter(简单的多条目)

public class ThreeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private final int TYPRONE = 1;
private final int TYPETWO = 2;

Context context;
MusicBean bean;

ArrayList<MusicBean.SongListBean> list;
ArrayList<MusicBean.SongListBean> list1;

public ThreeAdapter(Context context, MusicBean bean) {
this.context = context;
this.bean = bean;
}

@Override
public int getItemViewType(int position) {
if(position%2==0){
return TYPRONE;
} else if(position%2==1){
return TYPETWO;
} else {
return super.getItemViewType(position);
}
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(viewType==TYPRONE){
View view = LayoutInflater.from(context).inflate(R.layout.three_item_one, null);
ViewHolderA viewHolderA = new ViewHolderA(view);
return viewHolderA;
}else if(viewType==TYPETWO){
View view = LayoutInflater.from(context).inflate(R.layout.three_item_two, null);
ViewHolderB viewHolderB = new ViewHolderB(view);
return viewHolderB;
}

return null;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(holder instanceof ViewHolderA){
list1=new ArrayList<>();
for(int i=0;i<bean.getSong_list().size();i++){
list1.add(new MusicBean.SongListBean(bean.getSong_list().get(position).getPic_small(),bean.getSong_list().get(position).getTitle()));
}
ImageLoader.getInstance().displayImage(list1.get(position).getPic_small(),((ViewHolderA) holder).img);
}else if(holder instanceof ViewHolderB){
list=new ArrayList<>();
for(int i=0;i<bean.getSong_list().size();i++){
list.add(new MusicBean.SongListBean(bean.getSong_list().get(position).getPic_small(),bean.getSong_list().get(position).getTitle()));
}
((ViewHolderB) holder).text.setText(list.get(position).getTitle());
}
}

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

class ViewHolderA extends RecyclerView.ViewHolder{

ImageView img;

public ViewHolderA(View itemView) {
super(itemView);
img= (ImageView) itemView.findViewById(R.id.item_img);
}
}

class ViewHolderB extends RecyclerView.ViewHolder{

TextView text;

public ViewHolderB(View itemView) {
super(itemView);
text= (TextView) itemView.findViewById(R.id.item_text);
}
}


MainActivity(简单的)

RecyclerView re_three;
ArrayList<MusicBean.SongListBean> songs;
private String position;
ThreeAdapter adapter;
String url;
String url2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);

re_three= (RecyclerView) findViewById(R.id.re_three);
url="http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=1
&offset=0";
position = getIntent().getStringExtra("position"); getData();}public void getData() { OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<MusicBean>() { @Override public void onUi(MusicBean musicBean) { musicBean.getSong_list(); //Log.d("main2",musicBean.getSong_list().get(0).getAlbum_title()+"---"); adapter=new ThreeAdapter(ThreeActivity.this,musicBean); re_three.setLayoutManager(new LinearLayoutManager(ThreeActivity.this)); re_three.setAdapter(adapter); adapter.notifyDataSetChanged(); } @Override public void onFailed(Call call, IOException e) { } });}

二、Adapter(复杂的)

Home_goods.DataBean list;
Context mcontext;
ArrayList mlist;
ArrayList mlist2;
ArrayList imgs_gwc;
ArrayList<Home_goods.DataBean.SubjectsBean.GoodsListBeanX> goodslist;
private Intent intent;

//枚举类型
private enum Item_Type{
Typeone ,Typetwo,Typethree,Typefour,Typefive,Typesix;
}

public XRAdapter(Context mcontext, Home_goods.DataBean list) {
this.mcontext = mcontext;
this.list = list;
intent = new Intent(mcontext, HomeWebActivity.class);

}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == Item_Type.Typeone.ordinal()) {
View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_one, null);
ViewHolderA viewHolder = new ViewHolderA(mView);
return viewHolder;

} else if (viewType == Item_Type.Typetwo.ordinal()) {

View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_two, null);
ViewHolderB viewHolder = new ViewHolderB(mView);
return viewHolder;
} else if (viewType == Item_Type.Typethree.ordinal()) {
View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_three, null);
ViewHolderC viewHolder = new ViewHolderC(mView);
return viewHolder;
}else if (viewType == Item_Type.Typefour.ordinal()) {
View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_four, null);
ViewHolderD viewHolder = new ViewHolderD(mView);
return viewHolder;
}else if (viewType == Item_Type.Typefive.ordinal()) {
View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_five, null);
ViewHolderE viewHolder = new ViewHolderE(mView);
return viewHolder;
}else if (viewType == Item_Type.Typesix.ordinal()) {
View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycler_item_six, null);
ViewHolderF viewHolder = new ViewHolderF(mView);
return viewHolder;
}

return null;
}

@Override
public void onBindViewHolder(final 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 GlideImageLoader());
((ViewHolderA) holder).mbanner.setImages(mlist);
((ViewHolderA) holder).mbanner.start();

((ViewHolderA) holder).mbanner.setOnBannerClickListener(new OnBannerClickListener() {
@Override
public void OnBannerClick(int position) {
String data = list.getAd1().get(position-1).getAd_type_dynamic_data();
intent.putExtra("url",data);
mcontext.startActivity(intent);
Toast.makeText(mcontext,data,Toast.LENGTH_SHORT).show();

}
});

} else if (holder instanceof ViewHolderB) {
//            ((ViewHolderB) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name() + "------样式二");
((ViewHolderB) holder).t1.setText(list.getAd5().get(0).getTitle());
((ViewHolderB) holder).t2.setText(list.getAd5().get(1).getTitle());
((ViewHolderB) holder).t3.setText(list.getAd5().get(2).getTitle());
((ViewHolderB) holder).t4.setText(list.getAd5().get(3).getTitle());

ImageLoader.getInstance().displayImage(list.getAd5().get(0).getImage(),((ViewHolderB) holder).img1);
ImageLoader.getInstance().displayImage(list.getAd5().get(1).getImage(),((ViewHolderB) holder).img2);
ImageLoader.getInstance().displayImage(list.getAd5().get(2).getImage(),((ViewHolderB) holder).img3);
ImageLoader.getInstance().displayImage(list.getAd5().get(3).getImage(),((ViewHolderB) holder).img4);

} else if (holder instanceof ViewHolderC) {
//            ((ViewHolderC) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式三");
}else if (holder instanceof ViewHolderD) {
imgs_gwc=new ArrayList();
for(int i=0;i<list.getActivityInfo().getActivityInfoList().size();i++){
imgs_gwc.add(list.getActivityInfo().getActivityInfoList().get(i).getActivityImg());
}
((ViewHolderD) holder).re2.setLayoutManager(new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.HORIZONTAL));
((ViewHolderD) holder).re2.setAdapter(new MyAdapter_gwc(imgs_gwc,mcontext));

}else if (holder instanceof ViewHolderE) {
mlist2=new ArrayList();
for(int i=0;i<list.getSubjects().size();i++){
mlist2.add(list.getSubjects().get(i).getImage());
}
//设置图片加载器
((ViewHolderE) holder).banner2.setImageLoader(new GlideImageLoader());
((ViewHolderE) holder).banner2.setImages(mlist2);
((ViewHolderE) holder).banner2.start();

((ViewHolderE) holder).banner2.setOnBannerClickListener(new OnBannerClickListener() {
@Override
public void OnBannerClick(int position) {
String wapUrl = list.getSubjects().get(position).getWapUrl();
intent.putExtra("url",wapUrl);
mcontext.startActivity(intent);
}
});
}else if (holder instanceof ViewHolderF) {
goodslist=new ArrayList();
for(int i=0;i<list.getDefaultGoodsList().size();i++){
String goods_name = list.getDefaultGoodsList().get(i).getGoods_name();
String goods_img = list.getDefaultGoodsList().get(i).getGoods_img();
goodslist.add(new Home_goods.DataBean.SubjectsBean.GoodsListBeanX(goods_name,goods_img));
}

((ViewHolderF) holder).re3.setLayoutManager(new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.HORIZONTAL));
((ViewHolderF) holder).re3.setAdapter(new MyAdapter_goods(mcontext,goodslist));
}

}

@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 == 2) {
return Item_Type.Typethree.ordinal();
}else if (position == 3) {
return Item_Type.Typefour.ordinal();
}else if (position == 4) {
return Item_Type.Typefive.ordinal();
}else if (position == 5) {
return Item_Type.Typesix.ordinal();
}
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 TextView t1;
public TextView t2;
public TextView t3;
public TextView t4;

public ImageView img1;
public ImageView img2;
public ImageView img3;
public ImageView img4;

public ViewHolderB(View itemView) {
super(itemView);

t1= (TextView) itemView.findViewById(R.id.id_num1);
t2= (TextView) itemView.findViewById(R.id.id_num2);
t3= (TextView) itemView.findViewById(R.id.id_num3);
t4= (TextView) itemView.findViewById(R.id.id_num4);

img1= (ImageView) itemView.findViewById(R.id.id_image1);
img2= (ImageView) itemView.findViewById(R.id.id_image2);
img3= (ImageView) itemView.findViewById(R.id.id_image3);
img4= (ImageView) itemView.findViewById(R.id.id_image4);
}
}

class ViewHolderC extends RecyclerView.ViewHolder {

public ViewHolderC(View itemView) {
super(itemView);

}
}
class ViewHolderD extends RecyclerView.ViewHolder {

public RecyclerView re2;

public ViewHolderD(View itemView) {
super(itemView);
re2= (RecyclerView) itemView.findViewById(R.id.id_recyclerview2);
}
}

class ViewHolderE extends RecyclerView.ViewHolder {

public Banner banner2;
public ViewHolderE(View itemView) {
super(itemView);

banner2= (Banner) itemView.findViewById(R.id.banner2);
}
}
class ViewHolderF extends RecyclerView.ViewHolder {

public RecyclerView re3;
public ViewHolderF(View itemView) {
super(itemView);
re3= (RecyclerView) itemView.findViewById(R.id.id_recyclerview_bottom);

}
}


MainActivity

//新加的
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(path_url,curr);
xr.refreshComplete();
}

@Override
public void onLoadMore() {
curr++;
getData(path_url,curr);
xr.refreshComplete();
}
});
getData(path_url,1);

return view;
}

//初始化数据
private void getData(String url,int curr){
OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<Home_goods>() {
@Override
public void onUi(Home_goods homeBean) {
homeBean.getMsg();
mxradapter = new XRAdapter(getActivity(),homeBean.getData());
xr.setAdapter(mxradapter);

}

@Override
public void onFailed(Call call, IOException e) {

}
});


//加载轮播图图片


GlideImageLoader

public class GlideImageLoader extends ImageLoader {

@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐