前言:
RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好.
多说无益,直接看效果图:
首先项目build.gradle中添加下面依赖:
//图片轮播
implementation 'com.youth.banner:banner:1.4.10'
//注解id
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//列表
implementation 'com.android.support:recyclerview-v7:27.+'
//加载图片
implementation 'com.github.bumptech.glide:glide:4.3.1'123456789
注意:studio3.0以下版本implementation 换成compile
1、全部java代码:
数据源类:DataTestUtils
public class DataTestUtils {
private static String bannerFirst = "https://img.zcool.cn/community/016c355652c7516ac7251c943f32da.jpg";
private static String bannerSecond = "https://img.zcool.cn/community/01881a5652c7516ac7251c94522683.jpg";
private static String bannerThird = "https://img.zcool.cn/community/01c35e5652c76e32f87512f6883563.jpg";
private static String bannerFourth = "https://img.zcool.cn/community/0187da5652c76e32f87512f692d6d1.jpg";
private static String bottomFirst = "https://img.zcool.cn/community/0192ef5548e0ba0000009e320ddbe1.jpg";
private static String bottomSecond = "https://img.zcool.cn/community/0192b7563725ff32f87512f6e14db1.jpg";
private static String bottomThird = "https://a.vpimg2.com/upload/merchandise/236513/AK-1102031400044411-1.jpg";
private static String bottomFourth = "https://img001.hc360.cn/hb/MTQ3NDM5MDAzNjE1Mi0xODU1Njg5MjU4.jpg";
public static HomeDataBean.TypeBanner getBannerData() {
//轮播图链接
List<String> banneUrl = new ArrayList<>();
//轮播图标题
List<String> banneTitle = new ArrayList<>();
//轮播图
HomeDataBean.TypeBanner banner = new HomeDataBean.TypeBanner();
banneUrl.add(bannerFirst);
banneUrl.add(bannerSecond);
banneUrl.add(bannerThird);
banneUrl.add(bannerFourth);
banneTitle.add("凝心聚力,圆您星梦");
banneTitle.add("直播综艺,精彩不断");
banneTitle.add("酷炫礼物,互动不停");
banneTitle.add("边看边买,抢先体验");
banner.setUrls(banneUrl);
banner.setTitles(banneTitle);
return banner;
}
public static HomeDataBean.TypeBrand getBrandData() {
HomeDataBean.TypeBrand brand = new HomeDataBean.TypeBrand();
brand.setPicFirst(bottomFirst);
brand.setPicSecond(bottomSecond);
brand.setPicThird(bottomThird);
brand.setFirstTitle("全新串标 首发");
brand.setSecondTitle("周大福珠宝");
brand.setThirdTitle("秋冬首发");
brand.setFirstLable("串标");
brand.setSecondLable("潮流经典");
brand.setThirdLable("经典");
brand.setFourthLable("全新系列");
brand.setFifthLable("独家");
brand.setSixthLable("顶尖时尚");
return brand;
}
public static HomeDataBean.TypeFocus getFocusData() {
HomeDataBean.TypeFocus focus = new HomeDataBean.TypeFocus();
focus.setTitle("看球最佳音响榜");
focus.setContent("卖爆16.8万件");
focus.setPicFirst(bottomFirst);
focus.setPicSecond(bottomSecond);
focus.setPicThird(bottomThird);
focus.setPicFourth(bottomFirst);
focus.setPicFifth(bottomSecond);
focus.setPicSixth(bottomThird);
focus.setPicSeventh(bottomFourth);
focus.setTitleFirst("家用美容仪榜");
focus.setTitleSecond("卖爆6.1万件");
focus.setTitleThird("高街精致裙子榜");
focus.setTitleFourth("卖爆650件");
focus.setTitleFifth("超值时尚机械榜");
focus.setTitleSixth("卖爆106.8万件");
focus.setTitleSeventh("时尚手表榜");
focus.setTitleEighth("卖爆1.2万件");
return focus;
}
public static HomeDataBean.TypeSelect getSelectData() {
//横向滑动图片集合
List<String> slideUrls = new ArrayList<>();
HomeDataBean.TypeSelect select = new HomeDataBean.TypeSelect();
select.setUrlFirst(bottomFirst);
select.setUrlSecond(bottomSecond);
select.setUrlThird(bottomThird);
for (int i = 0; i < 10; i++) {
slideUrls.add(bottomSecond);
}
select.setUrls(slideUrls);
return select;
}
public static void getBottomData( List<Object> mObjects) {
mObjects.add(new HomeDataBean.TypeBottom(bottomFirst, "劳力士集团新品帝舵手表男",
"碧湾系列青铜型机械男表M79250BM-0001", 19999.9));
mObjects.add(new HomeDataBean.TypeBottom(bottomSecond, "Hermes/爱马仕大地中性男士淡香水",
"EDT 50/100ml 持久清新 成熟\n", 799.9));
mObjects.add(new HomeDataBean.TypeBottom(bottomThird, "金盾夏季男士短袖衬衫",
"商务休闲韩版修身白色衬衣半袖职业正装衬衣\n", 99.9));
mObjects.add(new HomeDataBean.TypeBottom(bottomFourth, "黄金手链女款",
"足金999简约圆珠佛珠光珠情侣手链七夕情人节礼物\n", 399.9));
mObjects.add(new HomeDataBean.TypeBottom(bottomFirst, "超多维SuperD裸眼悬浮3d",
"超多维SuperD裸眼悬浮3d", 699.9));
}
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
数据实体类HomeDataBean:
public class HomeDataBean {
/**
* 轮播图
*/
public static class TypeBanner {
//轮播连接
private List<String> urls;
//轮播标题
private List<String> titles;
public List<String> getUrls() {
return urls;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
public List<String> getTitles() {
return titles;
}
public void setTitles(List<String> titles) {
this.titles = titles;
}
}
/**
* 品牌图
*/
public static class TypeBrand {
private String picFirst;
private String firstTitle;
private String firstLable;
private String secondLable;
private String picSecond;
private String secondTitle;
private String thirdLable;
private String fourthLable;
private String picThird;
private String thirdTitle;
private String fifthLable;
private String sixthLable;
public String getPicFirst() {
return picFirst;
}
public void setPicFirst(String picFirst) {
this.picFirst = picFirst;
}
public String getFirstTitle() {
return firstTitle;
}
public void setFirstTitle(String firstTitle) {
this.firstTitle = firstTitle;
}
public String getFirstLable() {
return firstLable;
}
public void setFirstLable(String firstLable) {
this.firstLable = firstLable;
}
public String getSecondLable() {
return secondLable;
}
public void setSecondLable(String secondLable) {
this.secondLable = secondLable;
}
public String getPicSecond() {
return picSecond;
}
public void setPicSecond(String picSecond) {
this.picSecond = picSecond;
}
public String getSecondTitle() {
return secondTitle;
}
public void setSecondTitle(String secondTitle) {
this.secondTitle = secondTitle;
}
public String getThirdLable() {
return thirdLable;
}
public void setThirdLable(String thirdLable) {
this.thirdLable = thirdLable;
}
public String getFourthLable() {
return fourthLable;
}
public void setFourthLable(String fourthLable) {
this.fourthLable = fourthLable;
}
public String getPicThird() {
return picThird;
}
public void setPicThird(String picThird) {
this.picThird = picThird;
}
public String getThirdTitle() {
return thirdTitle;
}
public void setThirdTitle(String thirdTitle) {
this.thirdTitle = thirdTitle;
}
public String getFifthLable() {
return fifthLable;
}
public void setFifthLable(String fifthLable) {
this.fifthLable = fifthLable;
}
public String getSixthLable() {
return sixthLable;
}
public void setSixthLable(String sixthLable) {
this.sixthLable = sixthLable;
}
}
/**
* 榜单
*/
public static class TypeFocus {
private String title;
private String content;
private String picFirst;
private String picSecond;
private String picThird;
private String picFourth;
private String picFifth;
private String picSixth;
private String picSeventh;
private String titleFirst;
private String titleSecond;
private String titleThird;
private String titleFourth;
private String titleFifth;
private String titleSixth;
private String titleSeventh;
private String titleEighth;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPicFirst() {
return picFirst;
}
public void setPicFirst(String picFirst) {
this.picFirst = picFirst;
}
public String getPicSecond() {
return picSecond;
}
public void setPicSecond(String picSecond) {
this.picSecond = picSecond;
}
public String getPicThird() {
return picThird;
}
public void setPicThird(String picThird) {
this.picThird = picThird;
}
public String getPicFourth() {
return picFourth;
}
public void setPicFourth(String picFourth) {
this.picFourth = picFourth;
}
public String getPicFifth() {
return picFifth;
}
public void setPicFifth(String picFifth) {
this.picFifth = picFifth;
}
public String getPicSixth() {
return picSixth;
}
public void setPicSixth(String picSixth) {
this.picSixth = picSixth;
}
public String getPicSeventh() {
return picSeventh;
}
public void setPicSeventh(String picSeventh) {
this.picSeventh = picSeventh;
}
public String getTitleFirst() {
return titleFirst;
}
public void setTitleFirst(String titleFirst) {
this.titleFirst = titleFirst;
}
public String getTitleSecond() {
return titleSecond;
}
public void setTitleSecond(String titleSecond) {
this.titleSecond = titleSecond;
}
public String getTitleThird() {
return titleThird;
}
public void setTitleThird(String titleThird) {
this.titleThird = titleThird;
}
public String getTitleFourth() {
return titleFourth;
}
public void setTitleFourth(String titleFourth) {
this.titleFourth = titleFourth;
}
public String getTitleFifth() {
return titleFifth;
}
public void setTitleFifth(String titleFifth) {
this.titleFifth = titleFifth;
}
public String getTitleSixth() {
return titleSixth;
}
public void setTitleSixth(String titleSixth) {
this.titleSixth = titleSixth;
}
public String getTitleSeventh() {
return titleSeventh;
}
public void setTitleSeventh(String titleSeventh) {
this.titleSeventh = titleSeventh;
}
public String getTitleEighth() {
return titleEighth;
}
public void setTitleEighth(String titleEighth) {
this.titleEighth = titleEighth;
}
}
/**
* 精选
*/
public static class TypeSelect {
private String urlFirst;
private String urlSecond;
private String urlThird;
public String getUrlFirst() {
return urlFirst;
}
public void setUrlFirst(String urlFirst) {
this.urlFirst = urlFirst;
}
public String getUrlSecond() {
return urlSecond;
}
public void setUrlSecond(String urlSecond) {
this.urlSecond = urlSecond;
}
public String getUrlThird() {
return urlThird;
}
public void setUrlThird(String urlThird) {
this.urlThird = urlThird;
}
//横向滑动的图片
private List<String> urls;
public List<String> getUrls() {
return urls;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
}
/**
* 精选
*/
public static class TypeBottom {
private String url;
private String title;
private String content;
private double price;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public TypeBottom(String url, String title, String content, double price) {
this.url = url;
this.title = title;
this.content = content;
this.price = price;
}
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
轮播图Banner图片加载器GlideImageLoader:
public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}123456
首页适配器HomeAdapter:
public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
//所有要展示的数据源object集合
private List<Object> objects;
private Context context;
//加入标记作为区分
private static final int TYPE_ITEM_BANNER = 0X120;
private static final int TYPE_ITEM_BRAND = 0X121;
private static final int TYPE_ITEM_FOCUS = 0X122;
private static final int TYPE_ITEM_SELECT = 0X123;
private static final int TYPE_ITEM_BOTTOM = 0X124;
public HomeAdapter(Context context, List<Object> objects) {
this.objects = objects;
this.context = context;
}
/**
* 基于项不同的类型来获得不同的viewholder,关联对应的布局
*/
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder = null;
switch (viewType) {
case TYPE_ITEM_BANNER:
//View view1 = inflater.inflate(R.layout.item_bann, parent, false);
//viewHolder = new BannerHolder(view1);
viewHolder = new BannerHolder(inflate(parent, R.layout.test_item_banner));
break;
case TYPE_ITEM_BRAND:
viewHolder = new BrandHolder(inflate(parent, R.layout.test_item_brand));
break;
case TYPE_ITEM_FOCUS:
viewHolder = new FocucsHolder(inflate(parent, R.layout.test_item_focus));
break;
case TYPE_ITEM_SELECT:
viewHolder = new SelectHolder(inflate(parent, R.layout.test_item_select));
break;
case TYPE_ITEM_BOTTOM:
viewHolder = new BottomHolder(inflate(parent, R.layout.test_item_bottom_item));
break;
}
return viewHolder;
}
/**
* 关联布局
*/
private View inflate(ViewGroup parent, int resId) {
return LayoutInflater.from(parent.getContext()).inflate(resId, parent, false);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
Object object = objects.get(position);
switch (holder.getItemViewType()) {
case TYPE_ITEM_BANNER://轮播图
setTypeItemBanner((BannerHolder) holder, (HomeDataBean.TypeBanner) object);
break;
case TYPE_ITEM_BRAND://品牌
setTypeItemBrand((BrandHolder) holder, (HomeDataBean.TypeBrand) object);
break;
case TYPE_ITEM_FOCUS://榜单
setTypeItemFocucs((FocucsHolder) holder, (HomeDataBean.TypeFocus) object);
break;
case TYPE_ITEM_SELECT://精选
setTypeItemSelect((SelectHolder) holder, (HomeDataBean.TypeSelect) object);
break;
case TYPE_ITEM_BOTTOM://底部商品列表
setTypeItemBottom((BottomHolder) holder, (HomeDataBean.TypeBottom) object);
break;
}
}
@Override
public int getItemViewType(int position) {
Object object = objects.get(position);
//判断pposition是否属于该实例,加载不同的布局
if (object instanceof HomeDataBean.TypeBanner) {
return TYPE_ITEM_BANNER;
} else if (object instanceof HomeDataBean.TypeBrand) {
return TYPE_ITEM_BRAND;
} else if (object instanceof HomeDataBean.TypeFocus) {
return TYPE_ITEM_FOCUS;
} else if (object instanceof HomeDataBean.TypeSelect) {
return TYPE_ITEM_SELECT;
} else if (object instanceof HomeDataBean.TypeBottom) {
return TYPE_ITEM_BOTTOM;
}
return super.getItemViewType(position);
}
@Override
public int getItemCount() {
return objects == null ? 0 : objects.size();
}
/**
* 设置轮播
*
* @param holder BannerHolder
* @param banner 实体
*/
private void setTypeItemBanner(BannerHolder holder, HomeDataBean.TypeBanner banner) {
// Log.e("TAG",info.getUrl());
//设置banner样式
holder.banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
//设置图片加载器
holder.banner.setImageLoader(new GlideImageLoader());
//设置图片集合
holder.banner.setImages(banner.getUrls());
//设置指示器位置
holder.banner.setIndicatorGravity(BannerConfig.RIGHT);
//设置banner动画效果
//holder.banner.setBannerAnimation(Transformer.Default);
//设置标题集合(当banner样式有显示title时)
//holder.banner.setBannerTitles(banner.getTitles());
//设置自动轮播,默认为true
//holder.banner.isAutoPlay(true);
//设置轮播时间
holder.banner.setDelayTime(3000);
//设置指示器位置(当banner模式中有指示器时)
//holder.banner.setIndicatorGravity(BannerConfig.CENTER);
//点击事件
holder.banner.setOnBannerListener(new OnBannerListener() {
@Override
public void OnBannerClick(int position) {
}
});
//banner设置方法全部调用完毕时最后调用
holder.banner.start();
}
class BannerHolder extends RecyclerView.ViewHolder {
private Banner banner;
public BannerHolder(View itemView) {
super(itemView);
banner = itemView.findViewById(R.id.banner);
}
}
/**
* 设置品牌
*/
private void setTypeItemBrand(BrandHolder holder, HomeDataBean.TypeBrand brand) {
holder.homeTitle.setText("发现品牌");
String picFirst = brand.getPicFirst();
String firstTitle = brand.getFirstTitle();
String firstLable = brand.getFirstLable();
String secondLable = brand.getSecondLable();
String picSecond = brand.getPicSecond();
String secondTitle = brand.getSecondTitle();
String thirdLable = brand.getThirdLable();
String fourthLable = brand.getFourthLable();
String picThird = brand.getPicThird();
String thirdTitle = brand.getThirdTitle();
String fifthLable = brand.getFifthLable();
String sixthLable = brand.getSixthLable();
Glide.with(context).load(picFirst).into(holder.brandPicFirst);
Glide.with(context).load(picSecond).into(holder.brandPicSecond);
Glide.with(context).load(picThird).into(holder.brandPicThird);
holder.brandFirstTitle.setText(firstTitle);
holder.brandFirstLable.setText(firstLable);
holder.brandSecondLable.setText(secondLable);
holder.brandSecondTitle.setText((secondTitle));
holder.brandThirdLable.setText(thirdLable);
holder.brandFourthLable.setText(fourthLable);
holder.brandThirdTitle.setText(thirdTitle);
holder.brandFifthLable.setText(fifthLable);
holder.brandSixthLable.setText(sixthLable);
}
class BrandHolder extends RecyclerView.ViewHolder {
@BindView(R.id.home_title)
TextView homeTitle;
@BindView(R.id.brand_pic_first)
ImageView brandPicFirst;
@BindView(R.id.brand_first_title)
TextView brandFirstTitle;
@BindView(R.id.brand_first_lable)
TextView brandFirstLable;
@BindView(R.id.brand_second_lable)
TextView brandSecondLable;
@BindView(R.id.brand_pic_second)
ImageView brandPicSecond;
@BindView(R.id.brand_second_title)
TextView brandSecondTitle;
@BindView(R.id.brand_third_lable)
TextView brandThirdLable;
@BindView(R.id.brand_fourth_lable)
TextView brandFourthLable;
@BindView(R.id.brand_pic_third)
ImageView brandPicThird;
@BindView(R.id.brand_third_title)
TextView brandThirdTitle;
@BindView(R.id.brand_fifth_lable)
TextView brandFifthLable;
@BindView(R.id.brand_sixth_lable)
TextView brandSixthLable;
public BrandHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
/**
* 设置榜单
*/
private void setTypeItemFocucs(FocucsHolder holder, HomeDataBean.TypeFocus focus) {
holder.homeTitle.setText("推荐榜单");
String title = focus.getTitle();
holder.foucesTitle.setText(title);
String content = focus.getContent();
holder.foucesContent.setText(content);
String picFirst = focus.getPicFirst();
String picSecond = focus.getPicSecond();
String picThird = focus.getPicThird();
String picFourth = focus.getPicFourth();
String picFifth = focus.getPicFifth();
String picSixth = focus.getPicSixth();
String picSeventh = focus.getPicSeventh();
Glide.with(context).load(picFirst).into(holder.foucesPicFirst);
Glide.with(context).load(picSecond).into(holder.foucesPicSecond);
Glide.with(context).load(picThird).into(holder.foucesPicThird);
Glide.with(context).load(picFourth).into(holder.foucesPicFourth);
Glide.with(context).load(picFifth).into(holder.foucesPicFifth);
Glide.with(context).load(picSixth).into(holder.foucesPicSixth);
Glide.with(context).load(picSeventh).into(holder.foucesPicSeventh);
String first = focus.getTitleFirst();
holder.foucesTitleFirst.setText(first);
String second = focus.getTitleSecond();
holder.foucesTitleSecond.setText(second);
String third = focus.getTitleThird();
holder.foucesTitleThird.setText(third);
String fourth = focus.getTitleFourth();
holder.foucesTitleFourth.setText(fourth);
String fifith = focus.getTitleFifth();
holder.foucesTitleFifth.setText(fifith);
String sixth = focus.getTitleSixth();
holder.foucesTitleSixth.setText(sixth);
String seventh = focus.getTitleSeventh();
holder.foucesTitleSeventh.setText(seventh);
String eighth = focus.getTitleEighth();
holder.foucesTitleEighth.setText(eighth);
}
class FocucsHolder extends RecyclerView.ViewHolder {
@BindView(R.id.home_title)
TextView homeTitle;
@BindView(R.id.fouces_title)
TextView foucesTitle;
@BindView(R.id.fouces_content)
TextView foucesContent;
@BindView(R.id.fouces_pic_first)
ImageView foucesPicFirst;
@BindView(R.id.fouces_pic_second)
ImageView foucesPicSecond;
@BindView(R.id.fouces_pic_third)
ImageView foucesPicThird;
@BindView(R.id.fouces_pic_fourth)
ImageView foucesPicFourth;
@BindView(R.id.fouces_pic_fifth)
ImageView foucesPicFifth;
@BindView(R.id.fouces_pic_sixth)
ImageView foucesPicSixth;
@BindView(R.id.fouces_pic_seventh)
ImageView foucesPicSeventh;
@BindView(R.id.fouces_title_first)
TextView foucesTitleFirst;
@BindView(R.id.fouces_title_second)
TextView foucesTitleSecond;
@BindView(R.id.fouces_title_third)
TextView foucesTitleThird;
@BindView(R.id.fouces_title_fourth)
TextView foucesTitleFourth;
@BindView(R.id.fouces_title_fifth)
TextView foucesTitleFifth;
@BindView(R.id.fouces_title_sixth)
TextView foucesTitleSixth;
@BindView(R.id.fouces_title_seventh)
TextView foucesTitleSeventh;
@BindView(R.id.fouces_title_eighth)
TextView foucesTitleEighth;
public FocucsHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
/**
* 设置精选
*/
private void setTypeItemSelect(SelectHolder holder, HomeDataBean.TypeSelect select) {
holder.homeTitle.setText("精选");
if (null != select.getUrls() && select.getUrls().size() > 0) {
//防止重复显示
holder.linearImage.removeAllViews();
for (int i = 0; i < select.getUrls().size(); i++) {
View view = LayoutInflater.from(context).inflate(R.layout.home_item_select_pic,
holder.linearImage, false);
ImageView image = view.findViewById(R.id.item_detail_image);
//展示图片
Glide.with(context).load(select.getUrls().get(i)).into(image);
//动态添加View
holder.linearImage.addView(view);
}
}
String first = select.getUrlFirst();
String second = select.getUrlFirst();
String third = select.getUrlFirst();
Glide.with(context).load(first).into(holder.itemSelectFirst);
Glide.with(context).load(second).into(holder.itemSelectSecond);
Glide.with(context).load(third).into(holder.itemSelectThird);
}
class SelectHolder extends RecyclerView.ViewHolder {
@BindView(R.id.home_title)
TextView homeTitle;
@BindView(R.id.item_select_first)
ImageView itemSelectFirst;
@BindView(R.id.item_select_second)
ImageView itemSelectSecond;
@BindView(R.id.item_select_third)
ImageView itemSelectThird;
@BindView(R.id.linear_image)
LinearLayout linearImage;
public SelectHolder(View itemView) {
super(itemView);
//注意加上this,否者null指针异常
ButterKnife.bind(this, itemView);
}
}
/**
* 底部商品;列表
*/
private void setTypeItemBottom(BottomHolder holder, HomeDataBean.TypeBottom bottom) {
//图片
String url = bottom.getUrl();
Glide.with(context).load(url).into(holder.itemUrl);
//品牌
String title = bottom.getTitle();
holder.itemTitle.setText(title);
//内容
String content = bottom.getContent();
holder.itemContent.setText(content);
//价格
double price = bottom.getPrice();
holder.itemPrice.setText("¥"+price);
}
class BottomHolder extends RecyclerView.ViewHolder {
@BindView(R.id.item_url)
ImageView itemUrl;
@BindView(R.id.item_title)
TextView itemTitle;
@BindView(R.id.item_content)
TextView itemContent;
@BindView(R.id.item_price)
TextView itemPrice;
public BottomHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
主界面MainActivity:
public class MainActivity extends AppCompatActivity {
@BindView(R.id.recycler)
RecyclerView recyclerView;
//总数据源
private List<Object> mObjects;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initData();
}
/**
* 初始化数据源
*/
private void initData() {
if (mObjects == null) {
mObjects = new ArrayList<>();
}
//设置轮播图数据
mObjects.add(DataTestUtils.getBannerData());
//设置品牌
mObjects.add(DataTestUtils.getBrandData());
//设置榜单
mObjects.add(DataTestUtils.getFocusData());
//设置榜单
mObjects.add(DataTestUtils.getSelectData());
//设置底部数据
DataTestUtils.getBottomData(mObjects);
HomeAdapter adapter = new HomeAdapter(this, mObjects);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
}
12345678910111213141516171819202122232425262728293031323334353637383940
2、所有布局代码:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:background="#f0f0f0"
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>1234567891011
home_item_select_pic.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="20px"
android:paddingRight="20px">
<ImageView
android:id="@+id/item_detail_image"
android:layout_width="250px"
android:layout_height="250px"
android:scaleType="centerCrop" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10px"
android:layout_marginTop="10px"
android:text="商品标题" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥ 99.9"
android:textColor="#f00" />
</LinearLayout>
12345678910111213141516171819202122232425262728
test_item_banner.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="vertical">
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="600px" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="35px">
<TextView
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="大牌制造商出品" />
<TextView
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="七天无忧退货" />
<TextView
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="全平台包邮" />
</LinearLayout>
</LinearLayout>
123456789101112131415161718192021222324252627282930313233343536373839404142
test_item_bottom_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="#fff"
android:orientation="horizontal"
android:padding="20px">
<ImageView
android:id="@+id/item_url"
android:layout_width="320px"
android:layout_height="320px"
android:scaleType="centerCrop" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="30px">
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商品标题"
android:textSize="46px" />
<TextView
android:id="@+id/item_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="30px"
android:layout_marginTop="30px"
android:text="商品内容"
android:textSize="40px" />
<TextView
android:id="@+id/item_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10px"
android:text="Y 150.99"
android:textColor="#FF0000"
android:textSize="36px" />
</LinearLayout>
</LinearLayout>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
test_item_brand.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:layout_marginTop="50px"
android:orientation="vertical"
android:padding="20px">
<TextView
android:id="@+id/home_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="50px"
android:text="标题"
android:textSize="46px"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="375px"
android:layout_marginTop="20px"
android:orientation="horizontal">
<RelativeLayout style="@style/linear_focus_one">
<ImageView
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/brand_pic_first" />
<LinearLayout style="@style/brand_linear">
<TextView
android:id="@+id/brand_first_title"
style="@style/focus_text"
android:text="独特设计 片假名系列" />
<LinearLayout style="@style/brand_linear_one">
<TextView
android:id="@+id/brand_first_lable"
style="@style/focus_text_one"
android:text="限量" />
<TextView
android:id="@+id/brand_second_lable"
style="@style/focus_text_one"
android:layout_marginLeft="20px"
android:text="浪潮尖货" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
style="@style/linear_focus_one"
android:layout_marginLeft="20px"
android:layout_marginRight="20px">
<ImageView
android:scaleType="centerCrop"
android:id="@+id/brand_pic_second"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout style="@style/brand_linear">
<TextView
android:id="@+id/brand_second_title"
style="@style/focus_text"
android:text="独特设计 片假名系列" />
<LinearLayout style="@style/brand_linear_one">
<TextView
android:id="@+id/brand_third_lable"
style="@style/focus_text_one"
android:text="限量" />
<TextView
android:id="@+id/brand_fourth_lable"
style="@style/focus_text_one"
android:layout_marginLeft="20px"
android:text="浪潮尖货" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout style="@style/linear_focus_one">
<ImageView
android:scaleType="centerCrop"
android:id="@+id/brand_pic_third"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout style="@style/brand_linear">
<TextView
android:id="@+id/brand_third_title"
style="@style/focus_text"
android:text="独特设计 片假名系列" />
<LinearLayout style="@style/brand_linear_one">
<TextView
android:id="@+id/brand_fifth_lable"
style="@style/focus_text_one"
android:text="限量" />
<TextView
android:id="@+id/brand_sixth_lable"
style="@style/focus_text_one"
android:layout_marginLeft="20px"
android:text="浪潮尖货" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
test_item_focus.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50px"
android:background="#fff"
android:orientation="vertical"
android:padding="20px">
<TextView
android:id="@+id/home_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="50px"
android:text="标题"
android:textSize="46px"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20px"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="20px"
android:layout_marginRight="100px"
android:orientation="vertical">
<TextView
style="@style/focus_two"
android:text="人气榜" />
<TextView
android:id="@+id/fouces_title"
style="@style/focus_two"
android:layout_marginTop="30px"
android:text="看球必备音响榜" />
<TextView
android:id="@+id/fouces_content"
style="@style/focus_one"
android:text="卖爆1.1万件"
android:textSize="34px" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"
android:orientation="horizontal"
android:padding="20px">
<ImageView
android:id="@+id/fouces_pic_first"
style="@style/focus_image_one" />
<ImageView
android:id="@+id/fouces_pic_second"
style="@style/focus_image_one" />
<ImageView
android:id="@+id/fouces_pic_third"
style="@style/focus_image_one" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/linear_focus"
android:layout_marginRight="20px">
<LinearLayout style="@style/linear_focus_one">
<TextView
android:id="@+id/fouces_title_first"
style="@style/focus_two"
android:text="卖爆1.1万件" />
<TextView
android:id="@+id/fouces_title_second"
style="@style/focus_one"
android:text="你喜欢的商品上榜了" />
</LinearLayout>
<ImageView
android:id="@+id/fouces_pic_fourth"
android:layout_width="150px"
android:layout_height="150px"
android:scaleType="centerCrop" />
</LinearLayout>
<LinearLayout style="@style/linear_focus">
<LinearLayout style="@style/linear_focus_one">
<TextView
android:id="@+id/fouces_title_third"
style="@style/focus_two"
android:text="卖爆1.1万件" />
<TextView
android:id="@+id/fouces_title_fourth"
style="@style/focus_one"
android:text="你喜欢的商品上榜了" />
</LinearLayout>
<ImageView
android:id="@+id/fouces_pic_fifth"
android:layout_width="150px"
android:layout_height="150px"
android:scaleType="centerCrop" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20px"
android:orientation="horizontal">
<LinearLayout
style="@style/linear_focus"
android:layout_marginRight="20px">
<LinearLayout style="@style/linear_focus_one">
<TextView
android:id="@+id/fouces_title_fifth"
style="@style/focus_two"
android:text="卖爆1.1万件" />
<TextView
android:id="@+id/fouces_title_sixth"
style="@style/focus_one"
android:text="你喜欢的商品上榜了" />
</LinearLayout>
<ImageView
android:id="@+id/fouces_pic_sixth"
android:layout_width="150px"
android:layout_height="150px"
android:scaleType="centerCrop" />
</LinearLayout>
<LinearLayout style="@style/linear_focus">
<LinearLayout style="@style/linear_focus_one">
<TextView
android:id="@+id/fouces_title_seventh"
style="@style/focus_two"
android:text="卖爆1.1万件" />
<TextView
android:id="@+id/fouces_title_eighth"
style="@style/focus_one"
android:text="你喜欢的商品上榜了" />
</LinearLayout>
<ImageView
android:id="@+id/fouces_pic_seventh"
android:layout_width="150px"
android:layout_height="150px"
android:scaleType="centerCrop" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
test_item_select.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:layout_marginTop="50px"
android:orientation="vertical"
android:padding="20px">
<TextView
android:id="@+id/home_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="50px"
android:text="标题"
android:textSize="46px"
android:textStyle="bold" />
<LinearLayout
android:layout_marginTop="20px"
android:layout_width="match_parent"
android:layout_height="480px"
android:orientation="horizontal">
<ImageView
android:scaleType="centerCrop"
android:id="@+id/item_select_first"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="20px"
android:layout_weight="1" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:scaleType="centerCrop"
android:id="@+id/item_select_second"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:scaleType="centerCrop"
android:id="@+id/item_select_third"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="20px"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:scrollbars="none">
<LinearLayout
android:id="@+id/linear_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal" />
</HorizontalScrollView>
</LinearLayout>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
3、资源文件
brand_shape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:bottomLeftRadius="10px"
android:bottomRightRadius="10px" />
<solid android:color="#77000000" />
</shape>12345678
style样式:
<style name="linear_focus_one">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:orientation">vertical</item>
</style>
<style name="brand_linear">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_alignParentBottom">true</item>
<item name="android:background">@drawable/brand_shape</item>
<item name="android:orientation">vertical</item>
<item name="android:padding">25px</item>
</style>
<style name="focus_text">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#fff</item>
<item name="android:textSize">30px</item>
</style>
<style name="focus_text_one">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#fff</item>
<item name="android:textSize">30px</item>
<item name="android:padding">5px</item>
</style>
<style name="brand_linear_one">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">10px</item>
<item name="android:orientation">horizontal</item>
</style>
<style name="focus_two">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">40px</item>
<item name="android:layout_marginTop">10px</item>
<item name="android:layout_marginBottom">10px</item>
</style>
<style name="focus_one">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">30px</item>
</style>
<style name="focus_image_one">
<item name="android:layout_width">160px</item>
<item name="android:layout_height">160px</item>
<item name="android:layout_margin">30px</item>
<item name="android:scaleType">centerCrop</item>
</style>
<style name="linear_focus">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center_vertical</item>
<item name="android:orientation">horizontal</item>
<item name="android:padding">30px</item>
</style>
---------------------
作者:HelloWord-
来源:优快云
原文:https://blog.youkuaiyun.com/qq_34536167/article/details/81837626
版权声明:本文为博主原创文章,转载请附上博文链接!