Commit 42a8c17a authored by leichao.gao's avatar leichao.gao

优化fragment 加载

parent c933e439
......@@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding
abstract class BaseFragment<T : ViewBinding> : Fragment() {
protected var isInitialized = false
protected abstract val binding: T
override fun onCreateView(
......
package com.base.pdfviewerscannerwhite.ui.main
import android.annotation.SuppressLint
import android.util.Log
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.core.content.ContextCompat
......@@ -55,6 +56,7 @@ class DocumentFragment(
var uiMode = UI_MODE_NORMAL
@SuppressLint("SetTextI18n")
override fun setView() {
when (dataType) {
......@@ -75,6 +77,15 @@ class DocumentFragment(
initPageViewer()
initTabLayout()
initSearchAdapter()
isInitialized = true
}
override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden)
if(hidden){
return
}
currentPage.refreshData()
}
private fun initSearchAdapter() {
......
......@@ -2,6 +2,7 @@ package com.base.pdfviewerscannerwhite.ui.main
import android.annotation.SuppressLint
import android.content.Intent
import android.util.Log
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.base.pdfviewerscannerwhite.bean.ConstObject
......@@ -48,23 +49,29 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
override fun setView() {
documentPresenter = DocumentPresenter(requireContext(), this, type, lifecycleScope)
initAdapter()
isInitialized = true
Log.d("glc","我被调用了setView")
}
override fun onResume() {
super.onResume()
refreshData()
}
fun refreshData() {
if (isVisible) {
val list = (requireActivity() as MainActivity).mainPresenter.getDataByType(type, dataType)
if (isInitialized && !isHidden) {
val list =
(requireActivity() as MainActivity).mainPresenter.getDataByType(type, dataType)
val sortList = sortByMode(list)
sortList.forEach {
LogEx.logDebug(TAG, "sortByMode ${File(it.path).lastModified().toFormatTime3()}")
}
adapter.submitList(sortList)
binding.llEmpty.isVisible = list.isEmpty()
Log.d("glc", "加载数据成功:"+type+" list:"+list.size)
}else {
Log.d("glc", "加载数据失败:"+type)
}
}
......@@ -180,7 +187,10 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
fun getSearchItems(search: String): List<DocumentBean> {
if (isVisible) {
return adapter.items.filter { File(it.path).name.lowercase(Locale.ENGLISH).contains(search.lowercase(Locale.ENGLISH)) }
return adapter.items.filter {
File(it.path).name.lowercase(Locale.ENGLISH)
.contains(search.lowercase(Locale.ENGLISH))
}
}
return listOf()
}
......
......@@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
......@@ -56,17 +57,19 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
LogEx.logDebug(TAG, "initView")
mainPresenter = MainPresenter(this, this, lifecycleScope)
mainPresenter.initScannerLauncher(this)
showStoragePermission(launcher, allowAction = {
// mainPresenter.initAllDocumentData()
Log.d("glc","我被调用了B")
})
}
override fun onResume() {
super.onResume()
if (checkStorePermission() && needRefresh) {
mainPresenter.initAllDocumentData()
Log.d("glc","我被调用了A")
} else {
showStoragePermission(launcher, allowAction = {
mainPresenter.initAllDocumentData()
})
}
}
......@@ -164,6 +167,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
show(toolFragment)
commit()
}
currentFragment.userVisibleHint = true
currentFragment = toolFragment
isToolAdd = true
}
......@@ -239,7 +243,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
val newFile = File(mainPresenter.getDocumentAppDir(), "$it.pdf")
mainPresenter.copyFile(file, newFile)
this.updateMediaStore()
refreshPageList()
// refreshPageList()
}
}
......
......@@ -5,6 +5,7 @@ import android.content.Context
import android.content.IntentSender
import android.net.Uri
import android.os.Environment
import android.util.Log
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.IntentSenderRequest
import androidx.activity.result.contract.ActivityResultContracts
......@@ -57,12 +58,7 @@ class MainPresenter(
private lateinit var scannerLauncher: ActivityResultLauncher<IntentSenderRequest>
fun initAllDocumentData() = lifecycleScope.launch(Dispatchers.IO) {
pdfDocuments.clear()
wordDocuments.clear()
excelDocuments.clear()
pptDocuments.clear()
Log.d("glc","pdfs 清理前:"+pdfDocuments.size)
context.upDateDemoStore()
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
......@@ -70,22 +66,15 @@ class MainPresenter(
}
val pdfs = initAllPdfData()
pdfs.map { it.state = PdfBoxUtils.checkPdfEncryption(it.path) }
pdfDocuments.clear()
wordDocuments.clear()
excelDocuments.clear()
pptDocuments.clear()
Log.d("glc","pdfs:"+pdfs.size)
pdfDocuments.addAll(pdfs)
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
Log.d("glc","添加了 pdfDocuments:"+pdfDocuments.size)
wordDocuments.addAll(initAllWordData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
excelDocuments.addAll(initAllExcelData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
pptDocuments.addAll(initAllPptData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
......@@ -96,7 +85,7 @@ class MainPresenter(
fun getDataByType(documentType: String, dataType: String): List<DocumentBean> {
val bookmarkList = SpStringUtils.getSpStringList(SpStringUtils.BOOKMARK_KEY)
Log.d("glc","pdfDocuments:"+pdfDocuments.size)
when (documentType) {
TYPE_PDF -> {
pdfDocuments.forEach {
......
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