Commit 5cbcfc05 by 范玉宾

refresh article to be continue

Took 14 minutes
parent 46dfcf97
...@@ -82,6 +82,10 @@ dependencies { ...@@ -82,6 +82,10 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0" implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
implementation "androidx.lifecycle:lifecycle-runtime:2.0.0" implementation "androidx.lifecycle:lifecycle-runtime:2.0.0"
implementation 'io.github.scwang90:refresh-layout-kernel:2.0.5' //核心必须依赖
implementation 'io.github.scwang90:refresh-header-radar:2.0.5' //雷达刷新头
implementation 'io.github.scwang90:refresh-footer-ball:2.0.5' //球脉冲加载
api rootProject.ext.dependencies["ydl-user-router"] api rootProject.ext.dependencies["ydl-user-router"]
if (rootProject.ext.dev_mode){ if (rootProject.ext.dev_mode){
......
package fragment package fragment
import adapter.ArticleHomeItemAdapter import adapter.ArticleHomeItemAdapter
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.scwang.smart.refresh.footer.BallPulseFooter
import com.scwang.smart.refresh.header.BezierRadarHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.scwang.smart.refresh.layout.wrapper.RefreshFooterWrapper
import com.ydl.webview.H5Params import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity import com.ydl.webview.NewH5Activity
import com.ydl.ydl_router.manager.YDLRouterManager import com.ydl.ydl_router.manager.YDLRouterManager
...@@ -19,11 +24,16 @@ import io.reactivex.schedulers.Schedulers ...@@ -19,11 +24,16 @@ import io.reactivex.schedulers.Schedulers
class ArticleHomeFragment : BaseFragment() { class ArticleHomeFragment : BaseFragment() {
private lateinit var mSmartRefreshLayout: SmartRefreshLayout
private lateinit var mLvArticleContent: RecyclerView private lateinit var mLvArticleContent: RecyclerView
private lateinit var mLlEmptyLayout: LinearLayout private lateinit var mLlEmptyLayout: LinearLayout
private var isRefreshing: Boolean = false
private var isLoadingMore: Boolean = false
private var mCurrentPage = 0 private var mCurrentPage = 0
private var mHasMore = true private var mTotalPage = 0
private var mTagId: Int = 0 private var mTagId: Int = 0
private lateinit var mAdapter: ArticleHomeItemAdapter private lateinit var mAdapter: ArticleHomeItemAdapter
...@@ -34,9 +44,15 @@ class ArticleHomeFragment : BaseFragment() { ...@@ -34,9 +44,15 @@ class ArticleHomeFragment : BaseFragment() {
} }
override fun initDataAndEvent() { override fun initDataAndEvent() {
mSmartRefreshLayout = rootView.findViewById(R.id.smart_refresh_layout)
mLvArticleContent = rootView.findViewById(R.id.rv_article_content) mLvArticleContent = rootView.findViewById(R.id.rv_article_content)
mLlEmptyLayout = rootView.findViewById(R.id.ll_empty) mLlEmptyLayout = rootView.findViewById(R.id.ll_empty)
mSmartRefreshLayout.setRefreshHeader(BezierRadarHeader(activity))
mSmartRefreshLayout.setRefreshFooter(BallPulseFooter(activity))
mSmartRefreshLayout.autoRefresh()
mAdapter = ArticleHomeItemAdapter(activity as Context) mAdapter = ArticleHomeItemAdapter(activity as Context)
mAdapter.setOnItemClickListener(object : ArticleHomeItemAdapter.OnItemClickListener { mAdapter.setOnItemClickListener(object : ArticleHomeItemAdapter.OnItemClickListener {
override fun onItemClick(articleBean: ArticleBean) { override fun onItemClick(articleBean: ArticleBean) {
...@@ -47,11 +63,28 @@ class ArticleHomeFragment : BaseFragment() { ...@@ -47,11 +63,28 @@ class ArticleHomeFragment : BaseFragment() {
LinearLayoutManager(activity, RecyclerView.VERTICAL, false) LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
mLvArticleContent.adapter = mAdapter mLvArticleContent.adapter = mAdapter
isRefreshing = true
mSmartRefreshLayout.setOnRefreshListener {
isRefreshing = true
if (mTagId == 0){
getRecommendArticleList()
}else{
getArticleList(isRefreshing = true, isLoadMore = false)
}
it.finishRefresh()
}
mSmartRefreshLayout.setOnLoadMoreListener {
isLoadingMore = true
if (mTagId == 0){ if (mTagId == 0){
getRecommendArticleList() getRecommendArticleList()
}else{ }else{
getArticleList() getArticleList(isRefreshing = false, isLoadMore = true)
} }
it.finishLoadMore()
}
} }
override fun initDataAndEventLazy() { override fun initDataAndEventLazy() {
...@@ -62,6 +95,7 @@ class ArticleHomeFragment : BaseFragment() { ...@@ -62,6 +95,7 @@ class ArticleHomeFragment : BaseFragment() {
return R.layout.article_fragment_layout return R.layout.article_fragment_layout
} }
@SuppressLint("CheckResult")
private fun getRecommendArticleList(loadMore: Boolean = false) { private fun getRecommendArticleList(loadMore: Boolean = false) {
ArticleHttp.getInstance().getRecommendArticleList( ArticleHttp.getInstance().getRecommendArticleList(
perPageRows = 10, page = mCurrentPage perPageRows = 10, page = mCurrentPage
...@@ -91,10 +125,15 @@ class ArticleHomeFragment : BaseFragment() { ...@@ -91,10 +125,15 @@ class ArticleHomeFragment : BaseFragment() {
} }
private fun getArticleList(loadMore: Boolean = false) { @SuppressLint("CheckResult")
private fun getArticleList(isRefreshing:Boolean = true,isLoadMore: Boolean = false) {
ArticleHttp.getInstance().getArticleList( ArticleHttp.getInstance().getArticleList(
perPageRows = 10, perPageRows = 10,
page = mCurrentPage, tagId = mTagId page = if (isRefreshing) {
1
}else{
mCurrentPage+1
}, tagId = mTagId
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -107,11 +146,19 @@ class ArticleHomeFragment : BaseFragment() { ...@@ -107,11 +146,19 @@ class ArticleHomeFragment : BaseFragment() {
mLlEmptyLayout.visibility = View.GONE mLlEmptyLayout.visibility = View.GONE
mLvArticleContent.visibility = View.VISIBLE mLvArticleContent.visibility = View.VISIBLE
mCurrentPage = it.data.currentPage
mTotalPage = it.data.totalPage
mSmartRefreshLayout.setEnableLoadMore(mCurrentPage<mTotalPage)
val articles = it.data.list val articles = it.data.list
if (articles != null) { if (articles != null) {
if (isRefreshing){
mAdapter.setData(articles) mAdapter.setData(articles)
}else{
mAdapter.addData(articles)
}
} }
} }
}else{ }else{
mLlEmptyLayout.visibility = View.VISIBLE mLlEmptyLayout.visibility = View.VISIBLE
...@@ -120,6 +167,14 @@ class ArticleHomeFragment : BaseFragment() { ...@@ -120,6 +167,14 @@ class ArticleHomeFragment : BaseFragment() {
} }
} }
private fun refreshOrLoadingComplete() {
if (isLoadingMore) {
isLoadingMore = false
}
if (isRefreshing) {
isRefreshing = false
}
}
companion object { companion object {
......
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_article_content" android:id="@+id/rv_article_content"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -11,6 +16,10 @@ ...@@ -11,6 +16,10 @@
android:paddingTop="20dp" android:paddingTop="20dp"
android:clipToPadding="false"/> android:clipToPadding="false"/>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<LinearLayout <LinearLayout
android:id="@+id/ll_empty" android:id="@+id/ll_empty"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -36,8 +45,4 @@ ...@@ -36,8 +45,4 @@
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment