新增我的推荐歌单、通过ViewPager2+RadioGroup重构主界面( 简易音乐 六)

本文介绍了一个简易音乐应用的界面重构过程,包括使用ViewPager2和RadioGroup改进主界面,并新增推荐歌单功能及对应的适配器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新增我的推荐歌单、通过ViewPager2+RadioGroup重构主界面( 简易音乐 六)

关于

  在本篇开始之前,我发现之前以为的在fragment中使用轮播图在切换的过程中会导致重新加载banner的问题,其实是因为我使用的开启事务里面的replace方法调用了remove,导致碎片被移除,自然就banner也销毁了。上一篇请看主界面绘制、加载轮播图、减少apk体积( 简易音乐 五)
  本想着主界面代码简洁一点,经过这次重构,主界面代码增加了一部分,但是还好,我们现在看下运行效果。

效果

  因为我用的一个工具网站视频转GIF(免费),只支持15秒及以内转换,所以很多时候比较仓促,也懒得搞两段,,理解一下,按着教程来不会差的:
在这里插入图片描述

添加Api接口

 /**
     * 每日推荐歌单*/
    @GET("recommend/resource")
    Observable<RecommendListBean> getRecommendPlayList();

  添加对应实体类RecommendListBean

/**
 * 首页推荐歌单的ban
 * Created By Tobey on 2021/7/01
 */
public class RecommendListBean {
   
   

    private int code;
    private boolean featureFirst;
    private boolean haveRcmdSongs;
    private List<RecommendBean> recommend;

    public int getCode() {
   
   
        return code;
    }

    public void setCode(int code) {
   
   
        this.code = code;
    }

    public boolean isFeatureFirst() {
   
   
        return featureFirst;
    }

    public void setFeatureFirst(boolean featureFirst) {
   
   
        this.featureFirst = featureFirst;
    }

    public boolean isHaveRcmdSongs() {
   
   
        return haveRcmdSongs;
    }

    public void setHaveRcmdSongs(boolean haveRcmdSongs) {
   
   
        this.haveRcmdSongs = haveRcmdSongs;
    }

    public List<RecommendBean> getRecommend() {
   
   
        return recommend;
    }

    public void setRecommend(List<RecommendBean> recommend) {
   
   
        this.recommend = recommend;
    }

    public static class RecommendBean {
   
   

        private long id;
        private int type;
        private String name;
        private String copywriter;
        private String picUrl;
        private long playcount;
        private long createTime;
        private CreatorBean creator;
        private int trackCount;
        private long userId;
        private String alg;

        public long getId() {
   
   
            return id;
        }

        public void setId(long id) {
   
   
            this.id = id;
        }

        public int getType() {
   
   
            return type;
        }

        public void setType(int type) {
   
   
            this.type = type;
        }

        public String getName() {
   
   
            return name;
        }

        public void setName(String name) {
   
   
            this.name = name;
        }

        public String getCopywriter() {
   
   
            return copywriter;
        }

        public void setCopywriter(String copywriter) {
   
   
            this.copywriter = copywriter;
        }

        public String getPicUrl() {
   
   
            return picUrl;
        }

        public void setPicUrl(String picUrl) {
   
   
            this.picUrl = picUrl;
        }

        public long getPlaycount() {
   
   
            return playcount;
        }

        public void setPlaycount(long playcount) {
   
   
            this.playcount = playcount;
        }

        public long getCreateTime() {
   
   
            return createTime;
        }

        public void setCreateTime(long createTime) {
   
   
            this.createTime = createTime;
        }

        public CreatorBean getCreator() {
   
   
            return creator;
        }

        public void setCreator(CreatorBean creator) {
   
   
            this.creator = creator;
        }

        public int getTrackCount() {
   
   
            return trackCount;
        }

        public void setTrackCount(int trackCount) {
   
   
            this.trackCount = trackCount;
        }

        public long getUserId() {
   
   
            return userId;
        }

        public void setUserId(long userId) {
   
   
            this.userId = userId;
        }

        public String getAlg() {
   
   
            return alg;
        }

        public void setAlg(String alg) {
   
   
            this.alg = alg;
        }

        public static class CreatorBean {
   
   

            private String backgroundImgIdStr;
            private Object remarkName;
            private boolean mutual;
            private long userId;
            private long avatarImgId;
            private int djStatus;
            private boolean followed;
            private String backgroundUrl;
            private long backgroundImgId;
            private String detailDescription;
            private boolean defaultAvatar;
            private Object expertTags;
            private int accountStatus;
            private int vipType;
            private int province;
            private int gender;
            private String avatarUrl;
            private int authStatus;
            private int userType;
            private String nickname;
            private long birthday;
            private int city;
            private String avatarImgIdStr;
            private String description;
            private String signature;
            private int authority;

            public String getBackgroundImgIdStr() {
   
   
                return backgroundImgIdStr;
            }

            public void setBackgroundImgIdStr(String backgroundImgIdStr) {
   
   
                this.backgroundImgIdStr = backgroundImgIdStr;
            }

            public Object getRemarkName() {
   
   
                return remarkName;
            }

            public void setRemarkName(Object remarkName) {
   
   
                this.remarkName = remarkName;
            }

            public boolean isMutual() {
   
   
                return mutual;
            }

            public void setMutual(boolean mutual) {
   
   
                this.mutual = mutual;
            }

            public long getUserId() {
   
   
                return userId;
            }

            public void setUserId(long userId) {
   
   
                this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪の星空朝酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值