Skip to content

先展示效果

image.png

image.png

说明 要添加的一个新模块,我们从公告模块开始。进行就开始公告模块 添加app_work_json 中 把功能的路由添加上

{
    "id":8,
    "source":"https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App/raw/master/app/src/main/res/mipmap-xhdpi/icon_work_gonggao.png",
    "title":"通知公告",
    "page":"http://com.ruoyi/messages"
}

这个page 逻辑修改,其实是后台操作的,我们只有数据,就这样展示用的,简单了不少。 在代码里面开始写代码了。开始写路由了,therouter 中routeMap.json 中添加

{
    "path": "http://com.ruoyi/messages",
    "className": "com.ruoyi.app.activity.work.MessageActivity",
    "action": "",
    "description": "通知公告",
    "params": {}
},

com.ruoyi.app.activity.work.MessageActivity 是UI的界面

页面上tablayout + viewpager 结合使用。

pagerAdapter = FragmentPagerAdapter<Fragment>(this).apply {
    //1、通知 2、公告
    addFragment(NoticeFragment.newInstance("1"), "通知")
    addFragment(NoticeFragment.newInstance("2"), "公告")
    binding.viewPager.adapter = this
}
// 绑定
binding.tablayout.setupWithViewPager(binding.viewPager)

在创建fragment的时候传递

arguments = Bundle().apply {
    putString("noticeType", noticeType)
}
来区分是通知还是公告

在fragment 中 里面有下拉刷新和上拉更多 控件SwipeRefreshLayout

//加载更多适配
    private fun <T> setLoadMoreAdapter(mAdapter: BaseQuickAdapter<T, BaseViewHolder>) {
        //设置加载更多
        mAdapter.loadMoreModule.setOnLoadMoreListener {
            android.os.Handler(Looper.getMainLooper()).postDelayed({
                pageNum++
                getNoticeList(pageNum, noticeType)
            }, 1000)
        }

        //设置是否自动加载更多
        mAdapter.loadMoreModule.isAutoLoadMore = true
        mAdapter.loadMoreModule.isEnableLoadMoreIfNotFullPage = true
    }

如果更多内容,还有回到头部等功能。

private val rvListScrollListener: RecyclerView.OnScrollListener =
    object : RecyclerView.OnScrollListener() {
        override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
            if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                // 判断第一条item是否可见,如果不可见则显示回顶部按钮
                if (recyclerView.layoutManager!!.findViewByPosition(0) != null) {
                    if (binding.fabTop.getVisibility() === View.VISIBLE) {
                        binding.fabTop.setVisibility(View.INVISIBLE) // 设置滑动顶部按钮不可见
                    }
                } else {
                    if (binding.fabTop.getVisibility() === View.INVISIBLE) {
                        binding.fabTop.setVisibility(View.VISIBLE) // 设置滑动顶部按钮可见
                    }
                }
            }
        }
    }

列表展示 BaseQuickAdapter + RecyclerView

快速展示 UI

class NoticeAdapter : BaseQuickAdapter<NoticeItemEntity, BaseViewHolder>(R.layout.item_message),
    LoadMoreModule {
    override fun convert(holder: BaseViewHolder, item: NoticeItemEntity) {
        holder.setText(R.id.tv_time, item.createTime)
        holder.setText(R.id.tv_title, item.noticeTitle)
        holder.setText(R.id.tv_introduction, item.noticeContent)
    }
}

layout 中布局设置 控件赋值 就搞定了

关于tablayout 切换控件自定义 样式问题,

<com.google.android.material.tabs.TabLayout
        android:id="@+id/tablayout"
        android:layout_width="match_parent"
        android:layout_height="41dp"
        android:background="@color/white"
        app:tabBackground="@color/white"
        app:tabGravity="center"
        app:tabIndicatorColor="@color/blue"
        app:tabIndicatorFullWidth="false"
        app:tabMaxWidth="0dp"
        app:tabRippleColor="@android:color/transparent"
        app:tabSelectedTextColor="@color/blue"
        app:tabTextColor="@color/color_9"
        app:tabIndicator="@drawable/tab_indicator"
        app:tabIndicatorHeight="2dp"
        app:tabPaddingBottom="@dimen/dp_6">

    </com.google.android.material.tabs.TabLayout>

快速api 调试

json 获取然后 adapter 即可。

image.png

下载地址

https://gitee.com/OptimisticDevelopers/Ruoyi-Go

https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App

如果以上内容对您有帮助,请老板用微信扫一下赞赏码。

支持渠道支持渠道

本文档内容版权属于 RuoYi-Go 作者,保留所有权利 .