mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
make item displaying asynchronous
This commit is contained in:
@ -22,6 +22,7 @@ import com.simplemobiletools.filemanager.adapters.ItemsAdapter
|
|||||||
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog
|
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog
|
||||||
import com.simplemobiletools.filemanager.extensions.config
|
import com.simplemobiletools.filemanager.extensions.config
|
||||||
import kotlinx.android.synthetic.main.items_fragment.*
|
import kotlinx.android.synthetic.main.items_fragment.*
|
||||||
|
import kotlinx.android.synthetic.main.items_fragment.view.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -31,12 +32,15 @@ class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperat
|
|||||||
|
|
||||||
lateinit var mItems: ArrayList<FileDirItem>
|
lateinit var mItems: ArrayList<FileDirItem>
|
||||||
lateinit var mConfig: Config
|
lateinit var mConfig: Config
|
||||||
|
lateinit var fragmentView: View
|
||||||
|
|
||||||
private var mShowHidden = false
|
private var mShowHidden = false
|
||||||
var mPath = ""
|
var mPath = ""
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?) =
|
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
inflater!!.inflate(R.layout.items_fragment, container, false)!!
|
fragmentView = inflater!!.inflate(R.layout.items_fragment, container, false)!!
|
||||||
|
return fragmentView
|
||||||
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
@ -70,23 +74,27 @@ class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperat
|
|||||||
|
|
||||||
private fun fillItems() {
|
private fun fillItems() {
|
||||||
mPath = arguments.getString(PATH)
|
mPath = arguments.getString(PATH)
|
||||||
val newItems = getItems(mPath)
|
getItems(mPath) {
|
||||||
|
val newItems = it
|
||||||
Collections.sort(newItems)
|
Collections.sort(newItems)
|
||||||
|
|
||||||
|
fragmentView.apply {
|
||||||
items_swipe_refresh.isRefreshing = false
|
items_swipe_refresh.isRefreshing = false
|
||||||
if (newItems.hashCode() == mItems.hashCode()) {
|
if (newItems.hashCode() == mItems.hashCode()) {
|
||||||
return
|
return@getItems
|
||||||
}
|
}
|
||||||
|
|
||||||
mItems = newItems
|
mItems = newItems
|
||||||
|
|
||||||
val adapter = ItemsAdapter(activity as SimpleActivity, mItems, this) {
|
val adapter = ItemsAdapter(activity as SimpleActivity, mItems, this@ItemsFragment) {
|
||||||
itemClicked(it)
|
itemClicked(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
activity.runOnUiThread {
|
||||||
val currAdapter = items_list.adapter
|
val currAdapter = items_list.adapter
|
||||||
if (currAdapter == null) {
|
if (currAdapter == null) {
|
||||||
items_list.apply {
|
items_list.apply {
|
||||||
this@apply.adapter = adapter
|
this.adapter = adapter
|
||||||
addItemDecoration(RecyclerViewDivider(context))
|
addItemDecoration(RecyclerViewDivider(context))
|
||||||
}
|
}
|
||||||
items_fastscroller.setViews(items_list, items_swipe_refresh)
|
items_fastscroller.setViews(items_list, items_swipe_refresh)
|
||||||
@ -98,8 +106,11 @@ class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperat
|
|||||||
|
|
||||||
getRecyclerLayoutManager().onRestoreInstanceState(arguments.getParcelable<Parcelable>(SCROLL_STATE))
|
getRecyclerLayoutManager().onRestoreInstanceState(arguments.getParcelable<Parcelable>(SCROLL_STATE))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun getRecyclerLayoutManager() = (items_list.layoutManager as LinearLayoutManager)
|
fun getRecyclerLayoutManager() = (fragmentView.items_list.layoutManager as LinearLayoutManager)
|
||||||
|
|
||||||
fun getScrollState() = getRecyclerLayoutManager().onSaveInstanceState()
|
fun getScrollState() = getRecyclerLayoutManager().onSaveInstanceState()
|
||||||
|
|
||||||
@ -107,7 +118,8 @@ class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperat
|
|||||||
mListener = listener
|
mListener = listener
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getItems(path: String): ArrayList<FileDirItem> {
|
private fun getItems(path: String, callback: (items: ArrayList<FileDirItem>) -> Unit) {
|
||||||
|
Thread({
|
||||||
val items = ArrayList<FileDirItem>()
|
val items = ArrayList<FileDirItem>()
|
||||||
val files = File(path).listFiles()
|
val files = File(path).listFiles()
|
||||||
if (files != null) {
|
if (files != null) {
|
||||||
@ -123,7 +135,8 @@ class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperat
|
|||||||
items.add(FileDirItem(curPath, curName, file.isDirectory, children, size))
|
items.add(FileDirItem(curPath, curName, file.isDirectory, children, size))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return items
|
callback(items)
|
||||||
|
}).start()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getChildren(file: File): Int {
|
private fun getChildren(file: File): Int {
|
||||||
|
Reference in New Issue
Block a user