Loading build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ buildscript { propMinSdkVersion = 16 propTargetSdkVersion = propCompileSdkVersion propVersionCode = 1 propVersionName = '4.1.17' propVersionName = '4.2.0' kotlin_version = '1.2.50' support_libs = '27.1.1' } Loading commons/src/main/kotlin/com/simplemobiletools/commons/adapters/FilepickerItemsAdapter.kt +2 −2 Original line number Diff line number Diff line Loading @@ -29,9 +29,9 @@ class FilepickerItemsAdapter(activity: BaseSimpleActivity, val fileDirItems: Lis override fun getActionMenuId() = 0 override fun prepareItemSelection(view: View) {} override fun prepareItemSelection(viewHolder: ViewHolder) {} override fun markItemSelection(select: Boolean, view: View?) {} override fun markItemHolderSelection(select: Boolean, viewHolder: ViewHolder?) {} override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.filepicker_list_item, parent) Loading commons/src/main/kotlin/com/simplemobiletools/commons/adapters/MyRecyclerViewAdapter.kt +33 −16 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc protected var primaryColor = baseConfig.primaryColor protected var textColor = baseConfig.textColor protected var backgroundColor = baseConfig.backgroundColor protected var itemViews = SparseArray<View>() protected var itemHolders = SparseArray<ViewHolder>() protected val selectedPositions = HashSet<Int>() protected var positionOffset = 0 Loading @@ -39,9 +39,9 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc abstract fun getActionMenuId(): Int abstract fun prepareItemSelection(view: View) abstract fun prepareItemSelection(viewHolder: ViewHolder) abstract fun markItemSelection(select: Boolean, view: View?) abstract fun markItemHolderSelection(select: Boolean, viewHolder: ViewHolder?) abstract fun prepareActionMode(menu: Menu) Loading @@ -53,15 +53,15 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc protected fun toggleItemSelection(select: Boolean, pos: Int) { if (select) { if (itemViews[pos] != null) { prepareItemSelection(itemViews[pos]) selectedPositions.add(pos) if (itemHolders[pos] != null) { prepareItemSelection(itemHolders[pos]) } selectedPositions.add(pos) } else { selectedPositions.remove(pos) } markItemSelection(select, itemViews[pos]) markItemHolderSelection(select, itemHolders[pos]) if (selectedPositions.isEmpty()) { finishActMode() Loading Loading @@ -236,7 +236,7 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc override fun onDestroyActionMode(actionMode: ActionMode?) { super.onDestroyActionMode(actionMode) selectedPositions.forEach { markItemSelection(false, itemViews[it]) markItemHolderSelection(false, itemHolders[it]) } selectedPositions.clear() actBarTextView?.text = "" Loading @@ -251,23 +251,40 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc } protected fun bindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int, view: View) { itemViews.put(position, view) itemHolders.put(position, holder) toggleItemSelection(selectedPositions.contains(position), position) holder.itemView.tag = holder } override fun onViewRecycled(holder: ViewHolder) { super.onViewRecycled(holder) val pos = itemHolders.indexOfValue(holder) try { if (pos != -1) { itemHolders.removeAt(pos) } } catch (ignored: ArrayIndexOutOfBoundsException) { } } protected fun removeSelectedItems() { val newViewHolders = SparseArray<ViewHolder>() val cnt = itemHolders.size() for (i in 0..cnt) { if (selectedPositions.contains(i)) { continue } val view = itemHolders.get(i, null) val newIndex = i - selectedPositions.count { it <= i } newViewHolders.put(newIndex, view) } itemHolders = newViewHolders selectedPositions.sortedDescending().forEach { notifyItemRemoved(it + positionOffset) itemViews.put(it, null) } val newItems = SparseArray<View>() (0 until itemViews.size()) .filter { itemViews[it] != null } .forEachIndexed { curIndex, i -> newItems.put(curIndex, itemViews[i]) } itemViews = newItems finishActMode() fastScroller?.measureRecyclerView() } Loading Loading
build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ buildscript { propMinSdkVersion = 16 propTargetSdkVersion = propCompileSdkVersion propVersionCode = 1 propVersionName = '4.1.17' propVersionName = '4.2.0' kotlin_version = '1.2.50' support_libs = '27.1.1' } Loading
commons/src/main/kotlin/com/simplemobiletools/commons/adapters/FilepickerItemsAdapter.kt +2 −2 Original line number Diff line number Diff line Loading @@ -29,9 +29,9 @@ class FilepickerItemsAdapter(activity: BaseSimpleActivity, val fileDirItems: Lis override fun getActionMenuId() = 0 override fun prepareItemSelection(view: View) {} override fun prepareItemSelection(viewHolder: ViewHolder) {} override fun markItemSelection(select: Boolean, view: View?) {} override fun markItemHolderSelection(select: Boolean, viewHolder: ViewHolder?) {} override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.filepicker_list_item, parent) Loading
commons/src/main/kotlin/com/simplemobiletools/commons/adapters/MyRecyclerViewAdapter.kt +33 −16 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc protected var primaryColor = baseConfig.primaryColor protected var textColor = baseConfig.textColor protected var backgroundColor = baseConfig.backgroundColor protected var itemViews = SparseArray<View>() protected var itemHolders = SparseArray<ViewHolder>() protected val selectedPositions = HashSet<Int>() protected var positionOffset = 0 Loading @@ -39,9 +39,9 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc abstract fun getActionMenuId(): Int abstract fun prepareItemSelection(view: View) abstract fun prepareItemSelection(viewHolder: ViewHolder) abstract fun markItemSelection(select: Boolean, view: View?) abstract fun markItemHolderSelection(select: Boolean, viewHolder: ViewHolder?) abstract fun prepareActionMode(menu: Menu) Loading @@ -53,15 +53,15 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc protected fun toggleItemSelection(select: Boolean, pos: Int) { if (select) { if (itemViews[pos] != null) { prepareItemSelection(itemViews[pos]) selectedPositions.add(pos) if (itemHolders[pos] != null) { prepareItemSelection(itemHolders[pos]) } selectedPositions.add(pos) } else { selectedPositions.remove(pos) } markItemSelection(select, itemViews[pos]) markItemHolderSelection(select, itemHolders[pos]) if (selectedPositions.isEmpty()) { finishActMode() Loading Loading @@ -236,7 +236,7 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc override fun onDestroyActionMode(actionMode: ActionMode?) { super.onDestroyActionMode(actionMode) selectedPositions.forEach { markItemSelection(false, itemViews[it]) markItemHolderSelection(false, itemHolders[it]) } selectedPositions.clear() actBarTextView?.text = "" Loading @@ -251,23 +251,40 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc } protected fun bindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int, view: View) { itemViews.put(position, view) itemHolders.put(position, holder) toggleItemSelection(selectedPositions.contains(position), position) holder.itemView.tag = holder } override fun onViewRecycled(holder: ViewHolder) { super.onViewRecycled(holder) val pos = itemHolders.indexOfValue(holder) try { if (pos != -1) { itemHolders.removeAt(pos) } } catch (ignored: ArrayIndexOutOfBoundsException) { } } protected fun removeSelectedItems() { val newViewHolders = SparseArray<ViewHolder>() val cnt = itemHolders.size() for (i in 0..cnt) { if (selectedPositions.contains(i)) { continue } val view = itemHolders.get(i, null) val newIndex = i - selectedPositions.count { it <= i } newViewHolders.put(newIndex, view) } itemHolders = newViewHolders selectedPositions.sortedDescending().forEach { notifyItemRemoved(it + positionOffset) itemViews.put(it, null) } val newItems = SparseArray<View>() (0 until itemViews.size()) .filter { itemViews[it] != null } .forEachIndexed { curIndex, i -> newItems.put(curIndex, itemViews[i]) } itemViews = newItems finishActMode() fastScroller?.measureRecyclerView() } Loading