update Commons with the recyclerview adapter, fix some inconsistency glitches

This commit is contained in:
tibbi 2018-06-16 21:50:55 +02:00
parent 132953c25a
commit f1b4391d93
5 changed files with 27 additions and 21 deletions

View file

@ -47,7 +47,7 @@ ext {
} }
dependencies { dependencies {
implementation 'com.simplemobiletools:commons:4.1.17' implementation 'com.simplemobiletools:commons:4.2.1'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0' implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0'
implementation 'com.android.support:multidex:1.0.3' implementation 'com.android.support:multidex:1.0.3'
implementation 'it.sephiroth.android.exif:library:1.0.1' implementation 'it.sephiroth.android.exif:library:1.0.1'

View file

@ -47,12 +47,12 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
override fun getActionMenuId() = R.menu.cab_directories override fun getActionMenuId() = R.menu.cab_directories
override fun prepareItemSelection(view: View) { override fun prepareItemSelection(viewHolder: ViewHolder) {
view.dir_check?.background?.applyColorFilter(primaryColor) viewHolder.itemView.dir_check?.background?.applyColorFilter(primaryColor)
} }
override fun markItemSelection(select: Boolean, view: View?) { override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
view?.dir_check?.beVisibleIf(select) viewHolder?.itemView?.dir_check?.beVisibleIf(select)
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
@ -234,17 +234,23 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
activity.runOnUiThread { activity.runOnUiThread {
affectedPositions.sortedDescending().forEach { affectedPositions.sortedDescending().forEach {
notifyItemRemoved(it) notifyItemRemoved(it)
itemViews.put(it, null)
} }
val newItems = SparseArray<View>() val newViewHolders = SparseArray<ViewHolder>()
(0 until itemViews.size()) val cnt = viewHolders.size()
.filter { itemViews[it] != null } for (i in 0..cnt) {
.forEachIndexed { curIndex, i -> newItems.put(curIndex, itemViews[i]) } if (affectedPositions.contains(i)) {
continue
}
val view = viewHolders.get(i, null)
val newIndex = i - selectedPositions.count { it <= i }
newViewHolders.put(newIndex, view)
}
viewHolders = newViewHolders
currentDirectoriesHash = newDirs.hashCode() currentDirectoriesHash = newDirs.hashCode()
itemViews = newItems
dirs = newDirs dirs = newDirs
finishActMode() finishActMode()
fastScroller?.measureRecyclerView() fastScroller?.measureRecyclerView()
listener?.updateDirectories(newDirs) listener?.updateDirectories(newDirs)

View file

@ -25,10 +25,10 @@ class ManageFoldersAdapter(activity: BaseSimpleActivity, var folders: ArrayList<
override fun prepareActionMode(menu: Menu) {} override fun prepareActionMode(menu: Menu) {}
override fun prepareItemSelection(view: View) {} override fun prepareItemSelection(viewHolder: ViewHolder) {}
override fun markItemSelection(select: Boolean, view: View?) { override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
view?.manage_folder_holder?.isSelected = select viewHolder?.itemView?.manage_folder_holder?.isSelected = select
} }
override fun actionItemPressed(id: Int) { override fun actionItemPressed(id: Int) {

View file

@ -27,10 +27,10 @@ class ManageHiddenFoldersAdapter(activity: BaseSimpleActivity, var folders: Arra
override fun prepareActionMode(menu: Menu) {} override fun prepareActionMode(menu: Menu) {}
override fun prepareItemSelection(view: View) {} override fun prepareItemSelection(viewHolder: ViewHolder) {}
override fun markItemSelection(select: Boolean, view: View?) { override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
view?.manage_folder_holder?.isSelected = select viewHolder?.itemView?.manage_folder_holder?.isSelected = select
} }
override fun actionItemPressed(id: Int) { override fun actionItemPressed(id: Int) {

View file

@ -49,12 +49,12 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
override fun getActionMenuId() = R.menu.cab_media override fun getActionMenuId() = R.menu.cab_media
override fun prepareItemSelection(view: View) { override fun prepareItemSelection(viewHolder: ViewHolder) {
view.medium_check?.background?.applyColorFilter(primaryColor) viewHolder.itemView?.medium_check?.background?.applyColorFilter(primaryColor)
} }
override fun markItemSelection(select: Boolean, view: View?) { override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
view?.medium_check?.beVisibleIf(select) viewHolder?.itemView?.medium_check?.beVisibleIf(select)
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {