先展示效果


说明 要添加的一个新模块,我们从公告模块开始。进行就开始公告模块 添加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 即可。

下载地址
https://gitee.com/OptimisticDevelopers/Ruoyi-Go
https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App
如果以上内容对您有帮助,请老板用微信扫一下赞赏码。


