Commit 39eda934 authored by wanglei's avatar wanglei

...处理刷新

parent dc25fd17
......@@ -42,7 +42,7 @@
<activity
android:name=".ui.main.MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:launchMode="singleTask"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
......
......@@ -176,7 +176,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>() {
initData()
} else {
binding.llEmpty.visibility = View.GONE
adapter?.submitList(list)
adapter?.submitList(getRvAdList(list))
}
}
......@@ -197,7 +197,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>() {
adapter?.submitList(listOf())
} else {
binding.llEmpty.visibility = View.GONE
adapter?.submitList(list)
adapter?.submitList(getRvAdList(list))
}
binding.swipeRefreshLayout.isRefreshing = false
}
......
......@@ -7,6 +7,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.pdfoneread.R
import com.base.pdfoneread.ads.admob.AdmobNativeUtils
import com.base.pdfoneread.bean.DocumentBean
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PDF
......@@ -38,7 +39,7 @@ class DocumentAdapter(
item ?: return
if (item.isAd) {
val binding = ItemAdBinding.bind(holder.itemView)
// AdmobNativeUtils.showNativeAd(activity, binding.flAd, R.layout.layout_admob_document)
AdmobNativeUtils.showNativeAd(activity, binding.flAd, R.layout.layout_admob_document)
} else {
val binding = ItemDocumentBinding.bind(holder.itemView)
......
......@@ -4,6 +4,7 @@ import android.content.Context
import android.media.MediaScannerConnection
import android.net.Uri
import android.os.Environment
import com.base.pdfoneread.ads.AdmobHelper
import com.base.pdfoneread.ui.MyApplication.Companion.appContext
import com.base.pdfoneread.bean.ConstObject
import com.base.pdfoneread.bean.ConstObject.MIME_TYPE_DOC
......@@ -27,6 +28,7 @@ import com.base.pdfoneread.utils.getMediaFile
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import java.util.concurrent.CopyOnWriteArrayList
/**
......@@ -41,10 +43,10 @@ fun getGlobalAllList(): ArrayList<DocumentBean> {
return arrayListOf
}
val GlobalPdfList = arrayListOf<DocumentBean>()
val GlobalWordList = arrayListOf<DocumentBean>()
var GlobalExcelList = arrayListOf<DocumentBean>()
var GlobalPptList = arrayListOf<DocumentBean>()
val GlobalPdfList = CopyOnWriteArrayList<DocumentBean>()
val GlobalWordList = CopyOnWriteArrayList<DocumentBean>()
var GlobalExcelList = CopyOnWriteArrayList<DocumentBean>()
var GlobalPptList = CopyOnWriteArrayList<DocumentBean>()
fun cleanGlobalData() {
GlobalPdfList.clear()
......@@ -346,3 +348,15 @@ fun saveBookmarkChange(addRemove: Boolean, path: String) {
SpStringUtils.deleteSpString(BOOKMARK_KEY, path)
}
}
fun getRvAdList(list: List<DocumentBean>): List<DocumentBean> {
val flag = AdmobHelper.isShowRvNativeAd()
if (flag) {
val arrayList = arrayListOf<DocumentBean>()
arrayList.addAll(list)
arrayList.add(1, DocumentBean().apply { isAd = true })
return arrayList
}
return list
}
\ No newline at end of file
......@@ -51,6 +51,7 @@ class HomeFragment() : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
LogEx.logDebug(TAG,"onCreate")
}
override fun onCreateView(
......@@ -114,14 +115,23 @@ class HomeFragment() : Fragment() {
}
binding.swipeRefreshLayout.setOnRefreshListener {
refreshData()
refreshData("swipeRefreshLayout")
}
refreshData("onViewCreated")
}
refreshData()
override fun onDestroyView() {
super.onDestroyView()
LogEx.logDebug(TAG,"onDestroyView")
}
override fun onDestroy() {
super.onDestroy()
LogEx.logDebug(TAG,"onDestroy")
}
fun refreshData() {
fun refreshData(where: String = "") {
LogEx.logDebug(TAG, "refreshData where=$where")
kotlin.runCatching {
lifecycleScope.launch(Dispatchers.IO) {
......
......@@ -47,7 +47,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
changeHomeRvIcon()
if (!checkStorePermission()) {
showStoragePermission(launcher) { refreshHomeData() }
showStoragePermission(launcher) {
refreshHomeData()
}
}
}
......@@ -68,6 +70,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
changeHomeUI()
}
binding.llHome.callOnClick()
binding.llRecent.setOnClickListener {
changeRecentUI()
}
......@@ -122,28 +125,39 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
val appName = resources.getString(R.string.app_name)
binding.tvTittle.text = colorSpanner(appName, Color.parseColor("#FD1010"), 0, 3)
if (getNavCurrentFragment() !is HomeFragment) {
navController.popBackStack()
navController.navigate(R.id.homeFragment)
}
}
private fun changeRecentUI() {
disSelectTab()
binding.ivRecent.isSelected = true
binding.tvRecent.isSelected = true
binding.tvTittle.text = resources.getString(R.string.recent)
if (getNavCurrentFragment() !is RecentFragment) {
navController.popBackStack()
navController.navigate(R.id.recentFragment)
}
}
private fun changeSettingUI() {
disSelectTab()
binding.ivSetting.isSelected = true
binding.tvSetting.isSelected = true
binding.tvTittle.text = resources.getString(R.string.settings)
if (getNavCurrentFragment() !is SettingFragment) {
navController.popBackStack()
navController.navigate(R.id.settingFragment)
}
}
}
\ No newline at end of file
package com.base.pdfoneread.ui.search
import android.graphics.Color
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.angcyo.tablayout.delegate2.ViewPager2Delegate
......@@ -17,7 +15,6 @@ import com.base.pdfoneread.databinding.ActivitySearchBinding
import com.base.pdfoneread.ui.BaseActivity
import com.base.pdfoneread.utils.BarUtils
import com.base.pdfoneread.utils.LogEx
import java.io.File
class SearchActivity : BaseActivity<ActivitySearchBinding>() {
......@@ -46,6 +43,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
private val fragments by lazy {
mutableListOf(allPage, pdfPage, wordPage, excelPage, pptPage)
}
var currentPage: SearchPageFragment? = allPage
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
......@@ -66,8 +64,6 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
}
false
}
searchDocument()
}
private var pageAdapter: FragmentStateAdapter? = null
......@@ -83,6 +79,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
}
binding.viewPager2.run {
offscreenPageLimit = 5
isUserInputEnabled = true
//https://www.jianshu.com/p/f69bd30cf5b0
//FragmentStateAdapter 这里必须传人fragment
......@@ -97,6 +94,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
}
override fun onPageSelected(position: Int) {
currentPage = fragments[position]
}
})
}
......@@ -159,7 +157,8 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
}
private fun searchDocument() {
val search = binding.edit.text.toString()
currentPage?.searchContent(search)
}
companion object {
......
......@@ -16,18 +16,28 @@ import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PPT
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfoneread.databinding.FragmentSearchPageBinding
import com.base.pdfoneread.ui.document.DocumentAdapter
import com.base.pdfoneread.ui.document.GlobalExcelList
import com.base.pdfoneread.ui.document.GlobalPdfList
import com.base.pdfoneread.ui.document.GlobalPptList
import com.base.pdfoneread.ui.document.GlobalWordList
import com.base.pdfoneread.ui.document.getAllDocument
import com.base.pdfoneread.ui.document.getExcelDocument
import com.base.pdfoneread.ui.document.getGlobalAllList
import com.base.pdfoneread.ui.document.getPdfDocument
import com.base.pdfoneread.ui.document.getPptDocument
import com.base.pdfoneread.ui.document.getRvAdList
import com.base.pdfoneread.ui.document.getWordDocument
import com.base.pdfoneread.utils.LogEx
import com.base.pdfoneread.utils.updateMediaStore
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
import java.util.Locale
class SearchPageFragment() : Fragment() {
private val TAG = "SearchPageFragment"
private var type = TYPE_PDF
private var adapter: DocumentAdapter? = null
private lateinit var binding: FragmentSearchPageBinding
......@@ -63,39 +73,79 @@ class SearchPageFragment() : Fragment() {
}
binding.rv.adapter = adapter
binding.swipeRefreshLayout.setOnRefreshListener {
initData()
}
initPreData()
}
private fun initPreData() {
val list = when (type) {
TYPE_PDF -> {
GlobalPdfList
}
TYPE_WORD -> {
GlobalWordList
}
TYPE_EXCEL -> {
GlobalExcelList
}
TYPE_PPT -> {
GlobalPptList
}
else -> {
getGlobalAllList()
}
}
listRunMain(list)
}
private fun initData() {
LogEx.logDebug(TAG, "initData start type=$type isResumed=$isResumed isDetached=$isDetached")
val activity = requireActivity() as SearchActivity?
activity ?: return
if (activity.currentPage == this) {
binding.swipeRefreshLayout.isRefreshing = true
}
lifecycleScope.launch(Dispatchers.IO) {
requireContext().updateMediaStore()
val list: List<DocumentBean>
when (type) {
val list: List<DocumentBean> = when (type) {
TYPE_PDF -> {
list = getPdfDocument(requireContext())
getPdfDocument(requireContext())
}
TYPE_WORD -> {
list = getWordDocument(requireContext())
getWordDocument(requireContext())
}
TYPE_EXCEL -> {
list = getExcelDocument(requireContext())
getExcelDocument(requireContext())
}
TYPE_PPT -> {
list = getPptDocument(requireContext())
getPptDocument(requireContext())
}
else -> {
list = getAllDocument(requireContext())
getAllDocument(requireContext())
}
}
launch(Dispatchers.Main) {
listRunMain(list)
}
}
private fun listRunMain(list: List<DocumentBean>) {
lifecycleScope.launch(Dispatchers.Main) {
if (list.isEmpty()) {
binding.llEmpty.visibility = View.VISIBLE
adapter?.submitList(listOf())
......@@ -109,18 +159,24 @@ class SearchPageFragment() : Fragment() {
binding.flAd.visibility = View.GONE
adapter?.submitList(getRvAdList(list))
}
LogEx.logDebug(TAG, "initData end type=$type isVisible=$isVisible")
if (isVisible) {
binding.swipeRefreshLayout.isRefreshing = false
}
}
}
private fun getRvAdList(list: List<DocumentBean>): List<DocumentBean> {
val flag = AdmobHelper.isShowRvNativeAd()
if (flag) {
val arrayList = arrayListOf<DocumentBean>()
arrayList.addAll(list)
arrayList.add(1, DocumentBean().apply { isAd = true })
return arrayList
fun searchContent(search: String) {
lifecycleScope.launch(Dispatchers.IO) {
val searchList =
adapter?.items?.filter {
File(it.path).name.lowercase(Locale.ENGLISH).contains(search.lowercase(Locale.ENGLISH))
}
launch(Dispatchers.Main) {
adapter?.submitList(searchList)
}
return list
}
}
}
\ No newline at end of file
......@@ -189,6 +189,7 @@
android:id="@+id/card_tool"
android:layout_width="0dp"
android:layout_height="80dp"
android:visibility="gone"
android:layout_marginHorizontal="30dp"
android:layout_marginBottom="50dp"
app:cardCornerRadius="25dp"
......
......@@ -48,7 +48,7 @@
android:id="@+id/fl_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginTop="8dp"
android:background="@color/white"
app:layout_constraintTop_toBottomOf="@id/fl_fanhui">
......@@ -135,7 +135,7 @@
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginVertical="18dp"
android:layout_marginVertical="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_tab" />
......
......@@ -15,6 +15,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:id="@+id/swipeRefreshLayout"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
......@@ -23,6 +28,8 @@
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_document" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
......
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