Search
Use the following code example to find files and folders whose names contain a given string.
var disposable: Disposable? = nullvar searchPath = SELECTED_PATH // search root path
// 1. Create subject that connected to search edit text listener.var queryStringSource: Subject<String> = BehaviorSubject.createDefault("")
// 2. Connect subject to search edit text listener.private val searchQueryListener: SearchView.OnQueryTextListener = object : SearchView.OnQueryTextListener {
// Each time user enters the text, edit text listener calls subject.onNext() and // observable returned by search method will emit new list of file items. override fun onQueryTextSubmit(query: String): Boolean { queryStringSource.onNext(query) return false }
override fun onQueryTextChange(newText: String): Boolean { queryStringSource.onNext(newText) return false }}
// ...
// 3. Call search with that subject as queryStringSource and subscribe on returned observable that emits result of search.disposable = FileManager.browser.search(queryStringSource, searchPath) .subscribe { // it: List<FileItem>! // Update your recycler view adapter with received list. }
// You must call dispose() on disposable that returned by subscribe() method,// when it no longer needed, for example in your fragment’s onStop() or onPause().disposable?.dispose()
Links - FileTreeBrowser, FileItem.