|
|
@ -1,6 +1,7 @@ |
|
|
|
package io.legado.app.ui.book.search |
|
|
|
package io.legado.app.ui.book.search |
|
|
|
|
|
|
|
|
|
|
|
import android.app.Application |
|
|
|
import android.app.Application |
|
|
|
|
|
|
|
import android.os.Handler |
|
|
|
import androidx.lifecycle.MutableLiveData |
|
|
|
import androidx.lifecycle.MutableLiveData |
|
|
|
import io.legado.app.App |
|
|
|
import io.legado.app.App |
|
|
|
import io.legado.app.base.BaseViewModel |
|
|
|
import io.legado.app.base.BaseViewModel |
|
|
@ -12,15 +13,18 @@ import io.legado.app.utils.getPrefBoolean |
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
import kotlinx.coroutines.isActive |
|
|
|
import kotlinx.coroutines.isActive |
|
|
|
|
|
|
|
|
|
|
|
class SearchViewModel(application: Application) : BaseViewModel(application) |
|
|
|
class SearchViewModel(application: Application) : BaseViewModel(application), |
|
|
|
, SearchBookModel.CallBack { |
|
|
|
SearchBookModel.CallBack { |
|
|
|
|
|
|
|
val handler = Handler() |
|
|
|
private val searchBookModel = SearchBookModel(this, this) |
|
|
|
private val searchBookModel = SearchBookModel(this, this) |
|
|
|
var isSearchLiveData = MutableLiveData<Boolean>() |
|
|
|
var isSearchLiveData = MutableLiveData<Boolean>() |
|
|
|
var searchBookLiveData = MutableLiveData<List<SearchBook>>() |
|
|
|
var searchBookLiveData = MutableLiveData<List<SearchBook>>() |
|
|
|
var searchKey: String = "" |
|
|
|
var searchKey: String = "" |
|
|
|
var isLoading = false |
|
|
|
var isLoading = false |
|
|
|
var searchBooks = arrayListOf<SearchBook>() |
|
|
|
private var searchBooks = arrayListOf<SearchBook>() |
|
|
|
private var searchID = 0L |
|
|
|
private var searchID = 0L |
|
|
|
|
|
|
|
private var postTime = 0L |
|
|
|
|
|
|
|
private val sendRunnable = Runnable { upAdapter() } |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 开始搜索 |
|
|
|
* 开始搜索 |
|
|
@ -36,6 +40,17 @@ class SearchViewModel(application: Application) : BaseViewModel(application) |
|
|
|
searchBookModel.search(searchID, searchKey) |
|
|
|
searchBookModel.search(searchID, searchKey) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Synchronized |
|
|
|
|
|
|
|
private fun upAdapter() { |
|
|
|
|
|
|
|
if (System.currentTimeMillis() > postTime + 500) { |
|
|
|
|
|
|
|
handler.removeCallbacks(sendRunnable) |
|
|
|
|
|
|
|
postTime = System.currentTimeMillis() |
|
|
|
|
|
|
|
searchBookLiveData.postValue(searchBooks) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
handler.postDelayed(sendRunnable, 500) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onSearchStart() { |
|
|
|
override fun onSearchStart() { |
|
|
|
isSearchLiveData.postValue(true) |
|
|
|
isSearchLiveData.postValue(true) |
|
|
|
} |
|
|
|
} |
|
|
@ -151,7 +166,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) |
|
|
|
}) |
|
|
|
}) |
|
|
|
if (!scope.isActive) return |
|
|
|
if (!scope.isActive) return |
|
|
|
searchBooks = copyDataS |
|
|
|
searchBooks = copyDataS |
|
|
|
searchBookLiveData.postValue(copyDataS) |
|
|
|
upAdapter() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|