From b386e87bc8b45addefac07e11953401dbc8ac10e Mon Sep 17 00:00:00 2001 From: AnranYus Date: Sat, 21 Oct 2023 16:36:08 +0800 Subject: [PATCH] fix: Can load more content --- .../lsp/view/activity/main/MainActivity.kt | 2 +- .../com/lsp/view/activity/main/PostAdapter.kt | 2 +- .../java/com/lsp/view/model/MainViewModel.kt | 25 +++++-------------- .../main/java/com/lsp/view/model/UiState.kt | 3 +-- .../repository/exception/LoggerException.kt | 13 ++++++++++ .../NetworkUnableConnectException.kt | 2 +- .../UnableConstructObjectException.kt | 2 +- 7 files changed, 24 insertions(+), 25 deletions(-) create mode 100644 app/src/main/java/com/lsp/view/repository/exception/LoggerException.kt diff --git a/app/src/main/java/com/lsp/view/activity/main/MainActivity.kt b/app/src/main/java/com/lsp/view/activity/main/MainActivity.kt index a15aab1..442c3c0 100644 --- a/app/src/main/java/com/lsp/view/activity/main/MainActivity.kt +++ b/app/src/main/java/com/lsp/view/activity/main/MainActivity.kt @@ -85,7 +85,7 @@ class MainActivity : AppCompatActivity() { viewModel.adapter.apply { setLoadMoreListener(object :PostAdapter.OnScrollToBottom{ override fun event(position: Int) { - viewModel.appendPost() + viewModel.fetchMore() } }) diff --git a/app/src/main/java/com/lsp/view/activity/main/PostAdapter.kt b/app/src/main/java/com/lsp/view/activity/main/PostAdapter.kt index 555712d..490742f 100644 --- a/app/src/main/java/com/lsp/view/activity/main/PostAdapter.kt +++ b/app/src/main/java/com/lsp/view/activity/main/PostAdapter.kt @@ -38,7 +38,7 @@ class PostAdapter(val context: Context): fun appendDate(list: List){ val pos = postList.size postList.addAll(list) - notifyItemRangeInserted(pos, list.size) + notifyItemRangeInserted(pos-1, list.size) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { diff --git a/app/src/main/java/com/lsp/view/model/MainViewModel.kt b/app/src/main/java/com/lsp/view/model/MainViewModel.kt index cda2a49..73c837d 100644 --- a/app/src/main/java/com/lsp/view/model/MainViewModel.kt +++ b/app/src/main/java/com/lsp/view/model/MainViewModel.kt @@ -72,21 +72,19 @@ class MainViewModel(private val repository: PostRepository,context: Context):Vie } - private fun fetchNewPost(){ + private fun fetchNewPost(append:Boolean = false){ fetchJob?.cancel() fetchJob = viewModelScope.launch(Dispatchers.IO) { - _uiState.value.isRefreshing.postValue(true) - try { - val postList = repository.fetchPostData( + val postList = repository.fetchPostData( _uiState.value.nowSearchText.value, _uiState.value.isSafe, _uiState.value.nowPage ) launch(Dispatchers.Main) { - if (_uiState.value.isAppend){ + if (append){ adapter.appendDate(postList) }else{ adapter.pushNewData(postList) @@ -101,8 +99,6 @@ class MainViewModel(private val repository: PostRepository,context: Context):Vie } - - } @@ -124,18 +120,9 @@ class MainViewModel(private val repository: PostRepository,context: Context):Vie fetchNewPost() } - fun appendPost(){ - - _uiState.update { - it.copy(isAppend = true) - } - - fetchNewPost() - - _uiState.update { - it.copy(isAppend = false) - } - + fun fetchMore(){ + _uiState.value.nowPage++ + fetchNewPost(true) } fun updateSafeMode(mode:Boolean){ diff --git a/app/src/main/java/com/lsp/view/model/UiState.kt b/app/src/main/java/com/lsp/view/model/UiState.kt index d2942e2..6905a69 100644 --- a/app/src/main/java/com/lsp/view/model/UiState.kt +++ b/app/src/main/java/com/lsp/view/model/UiState.kt @@ -8,8 +8,7 @@ data class UiState( var nowSearchText:MutableLiveData = MutableLiveData(""), val nowSourceName: MutableLiveData = MutableLiveData(), val isSafe: Boolean = true, //安全模式 - val nowPage:Int = 1, - val isAppend:Boolean = false + var nowPage:Int = 1, ){ fun switchShowSearchBar(){ showSearchBar = !showSearchBar diff --git a/app/src/main/java/com/lsp/view/repository/exception/LoggerException.kt b/app/src/main/java/com/lsp/view/repository/exception/LoggerException.kt new file mode 100644 index 0000000..6cea422 --- /dev/null +++ b/app/src/main/java/com/lsp/view/repository/exception/LoggerException.kt @@ -0,0 +1,13 @@ +package com.lsp.view.repository.exception + +import android.util.Log + +open class LoggerException(override val message: String?):Exception() { + init { + logMessage() + } + + private fun logMessage(){ + Log.e(this::class.java.simpleName,message.toString()) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lsp/view/repository/exception/NetworkUnableConnectException.kt b/app/src/main/java/com/lsp/view/repository/exception/NetworkUnableConnectException.kt index 4f73a87..20be587 100644 --- a/app/src/main/java/com/lsp/view/repository/exception/NetworkUnableConnectException.kt +++ b/app/src/main/java/com/lsp/view/repository/exception/NetworkUnableConnectException.kt @@ -2,5 +2,5 @@ package com.lsp.view.repository.exception import okhttp3.ResponseBody -class NetworkErrorException(override val message: String?) : Exception() { +class NetworkErrorException(override val message: String?) : LoggerException(message) { } \ No newline at end of file diff --git a/app/src/main/java/com/lsp/view/repository/exception/UnableConstructObjectException.kt b/app/src/main/java/com/lsp/view/repository/exception/UnableConstructObjectException.kt index 6022c78..3a5c74c 100644 --- a/app/src/main/java/com/lsp/view/repository/exception/UnableConstructObjectException.kt +++ b/app/src/main/java/com/lsp/view/repository/exception/UnableConstructObjectException.kt @@ -2,5 +2,5 @@ package com.lsp.view.repository.exception import java.lang.Exception -class UnableConstructObjectException(override val message: String?):Exception(message) { +class UnableConstructObjectException(override val message: String?):LoggerException(message) { } \ No newline at end of file