Skip to content

Commit 1ebbcd6

Browse files
authored
Merge pull request #1023 from mikepenz/develop
dev -> main
2 parents 8cc3f7e + 0514fed commit 1ebbcd6

File tree

17 files changed

+342
-221
lines changed

17 files changed

+342
-221
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ It's blazing fast, minimizing the code you need to write, and is easy to extend.
4848

4949
## Latest releases 🛠
5050

51-
- Kotlin | [v5.5.1](https://github.com/mikepenz/FastAdapter/tree/v5.5.1)
52-
- Java && AndroidX | [v3.3.1](https://github.com/mikepenz/FastAdapter/tree/v3.3.1)
53-
- Java && AppCompat | [v3.2.9](https://github.com/mikepenz/FastAdapter/tree/v3.2.9)
51+
- Kotlin | [v5.6.0](https://github.com/mikepenz/FastAdapter/tree/v5.6.0)
52+
- [Deprecated] Java && AndroidX | [v3.3.1](https://github.com/mikepenz/FastAdapter/tree/v3.3.1)
53+
- [Deprecated] Java && AppCompat | [v3.2.9](https://github.com/mikepenz/FastAdapter/tree/v3.2.9)
5454

5555
## Provide the gradle dependency
5656

app/build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ android {
1414
ndkVersion "21.3.6528147"
1515

1616
defaultConfig {
17-
minSdkVersion setup.minSdk
17+
minSdkVersion 21
1818
targetSdkVersion setup.targetSdk
1919
versionCode release.versionCode
2020
versionName release.versionName
@@ -148,7 +148,7 @@ dependencies {
148148

149149
//used to load the images in the ImageListSample
150150
//https://github.com/coil-kt/coil
151-
implementation 'io.coil-kt:coil:1.3.2'
151+
implementation 'io.coil-kt:coil:1.4.0'
152152

153153
//Used to provide the drag selection like google photos
154154
implementation 'com.github.MFlisar:DragSelectRecyclerView:0.3'
@@ -191,6 +191,6 @@ buildscript {
191191
}
192192

193193
dependencies {
194-
classpath "io.realm:realm-gradle-plugin:10.8.0"
194+
classpath "io.realm:realm-gradle-plugin:10.8.1"
195195
}
196196
}

app/src/main/java/com/mikepenz/fastadapter/app/AdvancedSampleActivity.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import androidx.core.content.ContextCompat
1010
import androidx.recyclerview.widget.DefaultItemAnimator
1111
import androidx.recyclerview.widget.LinearLayoutManager
1212
import androidx.recyclerview.widget.RecyclerView
13-
import com.mikepenz.aboutlibraries.util.getThemeColor
1413
import com.mikepenz.fastadapter.*
1514
import com.mikepenz.fastadapter.adapters.GenericItemAdapter
1615
import com.mikepenz.fastadapter.adapters.ItemAdapter
@@ -20,6 +19,7 @@ import com.mikepenz.fastadapter.app.databinding.ActivitySampleBinding
2019
import com.mikepenz.fastadapter.app.items.SimpleItem
2120
import com.mikepenz.fastadapter.app.items.expandable.SimpleSubExpandableItem
2221
import com.mikepenz.fastadapter.app.items.expandable.SimpleSubItem
22+
import com.mikepenz.fastadapter.app.utils.getThemeColor
2323
import com.mikepenz.fastadapter.expandable.getExpandableExtension
2424
import com.mikepenz.fastadapter.helpers.ActionModeHelper
2525
import com.mikepenz.fastadapter.select.getSelectExtension

app/src/main/java/com/mikepenz/fastadapter/app/ExpandableMultiselectDeleteSampleActivity.kt

+28-23
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import androidx.appcompat.view.ActionMode
1010
import androidx.core.content.ContextCompat
1111
import androidx.recyclerview.widget.LinearLayoutManager
1212
import com.michaelflisar.dragselectrecyclerview.DragSelectTouchListener
13-
import com.mikepenz.aboutlibraries.util.getThemeColor
1413
import com.mikepenz.fastadapter.*
1514
import com.mikepenz.fastadapter.adapters.FastItemAdapter
1615
import com.mikepenz.fastadapter.adapters.GenericFastItemAdapter
1716
import com.mikepenz.fastadapter.app.databinding.ActivitySampleBinding
1817
import com.mikepenz.fastadapter.app.items.HeaderSelectionItem
1918
import com.mikepenz.fastadapter.app.items.expandable.SimpleSubItem
19+
import com.mikepenz.fastadapter.app.utils.getThemeColor
2020
import com.mikepenz.fastadapter.expandable.ExpandableExtension
2121
import com.mikepenz.fastadapter.expandable.getExpandableExtension
2222
import com.mikepenz.fastadapter.helpers.ActionModeHelper
@@ -79,7 +79,12 @@ class ExpandableMultiselectDeleteSampleActivity : AppCompatActivity() {
7979
mRangeSelectorHelper.onLongClick(position)
8080
if (actionMode != null) {
8181
//we want color our CAB
82-
this@ExpandableMultiselectDeleteSampleActivity.findViewById<View>(R.id.action_mode_bar).setBackgroundColor(this@ExpandableMultiselectDeleteSampleActivity.getThemeColor(R.attr.colorPrimary, ContextCompat.getColor(this, R.color.colorPrimary)))
82+
this@ExpandableMultiselectDeleteSampleActivity.findViewById<View>(R.id.action_mode_bar).setBackgroundColor(
83+
this@ExpandableMultiselectDeleteSampleActivity.getThemeColor(
84+
R.attr.colorPrimary,
85+
ContextCompat.getColor(this, R.color.colorPrimary)
86+
)
87+
)
8388

8489
// start the drag selection
8590
mDragSelectTouchListener.startDragSelection(position)
@@ -91,24 +96,24 @@ class ExpandableMultiselectDeleteSampleActivity : AppCompatActivity() {
9196

9297
// provide a custom title provider that even shows the count of sub items
9398
mActionModeHelper = ActionModeHelper(fastItemAdapter, R.menu.cab, ActionBarCallBack())
94-
.withTitleProvider(object : ActionModeHelper.ActionModeTitleProvider {
95-
override fun getTitle(selected: Int): String {
96-
return selected.toString() + "/" + SubItemUtil.countItems(fastItemAdapter.itemAdapter, false)
97-
}
98-
})
99+
.withTitleProvider(object : ActionModeHelper.ActionModeTitleProvider {
100+
override fun getTitle(selected: Int): String {
101+
return selected.toString() + "/" + SubItemUtil.countItems(fastItemAdapter.itemAdapter, false)
102+
}
103+
})
99104

100105
// this will take care of selecting range of items via long press on the first and afterwards on the last item
101106
mRangeSelectorHelper = RangeSelectorHelper(fastItemAdapter)
102-
.withSavedInstanceState(savedInstanceState)
103-
.withActionModeHelper(mActionModeHelper)
107+
.withSavedInstanceState(savedInstanceState)
108+
.withActionModeHelper(mActionModeHelper)
104109

105110
// setup the drag select listener and add it to the RecyclerView
106111
mDragSelectTouchListener = DragSelectTouchListener()
107-
.withSelectListener { start, end, isSelected ->
108-
mRangeSelectorHelper.selectRange(start, end, isSelected, true)
109-
// we handled the long press, so we reset the range selector
110-
mRangeSelectorHelper.reset()
111-
}
112+
.withSelectListener { start, end, isSelected ->
113+
mRangeSelectorHelper.selectRange(start, end, isSelected, true)
114+
// we handled the long press, so we reset the range selector
115+
mRangeSelectorHelper.reset()
116+
}
112117
binding.rv.addOnItemTouchListener(mDragSelectTouchListener)
113118

114119
// do basic RecyclerView setup
@@ -123,19 +128,19 @@ class ExpandableMultiselectDeleteSampleActivity : AppCompatActivity() {
123128
val expandableItem = HeaderSelectionItem()
124129
expandableItem.withSubSelectionProvider { SubItemUtil.countSelectedSubItems(fastItemAdapter, expandableItem) }
125130
expandableItem
126-
.withName("Test " + (i + 1))
127-
.withDescription("ID: " + (i + 1))
128-
.identifier = (i + 1).toLong()
131+
.withName("Test " + (i + 1))
132+
.withDescription("ID: " + (i + 1))
133+
.identifier = (i + 1).toLong()
129134
//.withIsExpanded(true) don't use this in such a setup, use adapter.expand() to expand all items instead
130135

131136
//add subItems so we can showcase the collapsible functionality
132137
val subItems = LinkedList<ISubItem<*>>()
133138
for (ii in 1..5) {
134139
val sampleItem = SimpleSubItem()
135140
sampleItem
136-
.withName("-- Test " + (i + 1) + "." + ii)
137-
.withDescription("ID: " + ((i + 1) * 100 + ii))
138-
.identifier = ((i + 1) * 100 + ii).toLong()
141+
.withName("-- Test " + (i + 1) + "." + ii)
142+
.withDescription("ID: " + ((i + 1) * 100 + ii))
143+
.identifier = ((i + 1) * 100 + ii).toLong()
139144
subItems.add(sampleItem)
140145
}
141146
expandableItem.subItems = subItems
@@ -144,9 +149,9 @@ class ExpandableMultiselectDeleteSampleActivity : AppCompatActivity() {
144149
} else {
145150
val sampleItem = SimpleSubItem()
146151
sampleItem
147-
.withName("Test " + (i + 1))
148-
.withDescription("ID: " + (i + 1))
149-
.identifier = (i + 1).toLong()
152+
.withName("Test " + (i + 1))
153+
.withDescription("ID: " + (i + 1))
154+
.identifier = (i + 1).toLong()
150155
items.add(sampleItem)
151156
}
152157
}

app/src/main/java/com/mikepenz/fastadapter/app/MultiselectSampleActivity.kt

+20-13
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,18 @@ import androidx.core.content.ContextCompat
1212
import androidx.recyclerview.widget.LinearLayoutManager
1313
import com.google.android.material.snackbar.BaseTransientBottomBar
1414
import com.google.android.material.snackbar.Snackbar
15-
import com.mikepenz.aboutlibraries.util.getThemeColor
1615
import com.mikepenz.fastadapter.FastAdapter
1716
import com.mikepenz.fastadapter.IAdapter
1817
import com.mikepenz.fastadapter.ISelectionListener
1918
import com.mikepenz.fastadapter.adapters.ItemAdapter
2019
import com.mikepenz.fastadapter.app.databinding.ActivitySampleBinding
2120
import com.mikepenz.fastadapter.app.items.SimpleItem
21+
import com.mikepenz.fastadapter.app.utils.getThemeColor
2222
import com.mikepenz.fastadapter.helpers.ActionModeHelper
2323
import com.mikepenz.fastadapter.helpers.UndoHelper
2424
import com.mikepenz.fastadapter.select.SelectExtension
2525
import com.mikepenz.fastadapter.select.getSelectExtension
2626
import com.mikepenz.itemanimators.SlideDownAlphaAnimator
27-
import java.util.*
2827

2928
class MultiselectSampleActivity : AppCompatActivity() {
3029
private lateinit var binding: ActivitySampleBinding
@@ -75,7 +74,11 @@ class MultiselectSampleActivity : AppCompatActivity() {
7574

7675
mFastAdapter.onClickListener = { v: View?, _: IAdapter<SimpleItem>, _: SimpleItem, _: Int ->
7776
if (v != null) {
78-
Toast.makeText(v.context, "SelectedCount: " + selectExtension.selections.size + " ItemsCount: " + selectExtension.selectedItems.size, Toast.LENGTH_SHORT).show()
77+
Toast.makeText(
78+
v.context,
79+
"SelectedCount: " + selectExtension.selections.size + " ItemsCount: " + selectExtension.selectedItems.size,
80+
Toast.LENGTH_SHORT
81+
).show()
7982
}
8083
false
8184
}
@@ -84,7 +87,12 @@ class MultiselectSampleActivity : AppCompatActivity() {
8487
val actionMode = mActionModeHelper.onLongClick(this@MultiselectSampleActivity, position)
8588
if (actionMode != null) {
8689
//we want color our CAB
87-
findViewById<View>(R.id.action_mode_bar).setBackgroundColor(this@MultiselectSampleActivity.getThemeColor(R.attr.colorPrimary, ContextCompat.getColor(this, R.color.colorPrimary)))
90+
findViewById<View>(R.id.action_mode_bar).setBackgroundColor(
91+
this@MultiselectSampleActivity.getThemeColor(
92+
R.attr.colorPrimary,
93+
ContextCompat.getColor(this, R.color.colorPrimary)
94+
)
95+
)
8896
}
8997
//if we have no actionMode we do not consume the event
9098
actionMode != null
@@ -107,8 +115,7 @@ class MultiselectSampleActivity : AppCompatActivity() {
107115

108116
//fill with some sample data
109117
val simpleItem = SimpleItem()
110-
simpleItem
111-
.withName("Header")
118+
simpleItem.withName("Header")
112119
simpleItem.identifier = 2
113120
simpleItem.isSelectable = false
114121
headerAdapter.add(simpleItem)
@@ -157,14 +164,14 @@ class MultiselectSampleActivity : AppCompatActivity() {
157164

158165
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
159166
mUndoHelper.remove(findViewById(android.R.id.content), "Item removed", "Undo", Snackbar.LENGTH_LONG, selectExtension.selections)
160-
.addCallback(object : BaseTransientBottomBar.BaseCallback<Snackbar>() {
161-
override fun onDismissed(transientBottomBar: Snackbar?, event: Int) {
162-
super.onDismissed(transientBottomBar, event)
163-
if (event != Snackbar.Callback.DISMISS_EVENT_TIMEOUT) {
164-
selectExtension.deselect()
165-
}
167+
.addCallback(object : BaseTransientBottomBar.BaseCallback<Snackbar>() {
168+
override fun onDismissed(transientBottomBar: Snackbar?, event: Int) {
169+
super.onDismissed(transientBottomBar, event)
170+
if (event != Snackbar.Callback.DISMISS_EVENT_TIMEOUT) {
171+
selectExtension.deselect()
166172
}
167-
})
173+
}
174+
})
168175

169176
//as we no longer have a selection so the actionMode can be finished
170177
mode.finish()

app/src/main/java/com/mikepenz/fastadapter/app/SampleActivity.kt

-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ class SampleActivity : AppCompatActivity() {
117117
21L -> Intent(this@SampleActivity, PagedActivity::class.java)
118118
22L -> Intent(this@SampleActivity, DragAndDropActivity::class.java)
119119
100L -> LibsBuilder()
120-
.withFields(R.string::class.java.fields)
121120
.withActivityTitle(getString(R.string.open_source))
122121
.withAboutIconShown(true)
123122
.withVersionShown(true)

app/src/main/java/com/mikepenz/fastadapter/app/binding/BindingIconItem.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package com.mikepenz.fastadapter.app.binding
22

33
import android.view.LayoutInflater
44
import android.view.ViewGroup
5-
import com.mikepenz.aboutlibraries.util.getThemeColor
65
import com.mikepenz.fastadapter.IExpandable
76
import com.mikepenz.fastadapter.IParentItem
87
import com.mikepenz.fastadapter.ISubItem
98
import com.mikepenz.fastadapter.app.R
109
import com.mikepenz.fastadapter.app.databinding.IconItemBinding
10+
import com.mikepenz.fastadapter.app.utils.getThemeColor
1111
import com.mikepenz.fastadapter.binding.AbstractBindingItem
1212
import com.mikepenz.fastadapter.binding.BindingViewHolder
1313
import com.mikepenz.iconics.IconicsDrawable

app/src/main/java/com/mikepenz/fastadapter/app/items/IconItem.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package com.mikepenz.fastadapter.app.items
33
import android.view.View
44
import android.widget.TextView
55
import androidx.recyclerview.widget.RecyclerView
6-
import com.mikepenz.aboutlibraries.util.getThemeColor
76
import com.mikepenz.fastadapter.IExpandable
87
import com.mikepenz.fastadapter.IParentItem
98
import com.mikepenz.fastadapter.ISubItem
109
import com.mikepenz.fastadapter.app.R
10+
import com.mikepenz.fastadapter.app.utils.getThemeColor
1111
import com.mikepenz.fastadapter.items.AbstractItem
1212
import com.mikepenz.iconics.IconicsDrawable
1313
import com.mikepenz.iconics.typeface.IIcon

app/src/main/java/com/mikepenz/fastadapter/app/items/SimpleImageItem.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import androidx.core.content.ContextCompat
88
import androidx.recyclerview.widget.RecyclerView
99
import coil.clear
1010
import coil.load
11-
import com.mikepenz.aboutlibraries.util.getThemeColor
1211
import com.mikepenz.fastadapter.IItemVHFactory
1312
import com.mikepenz.fastadapter.app.R
13+
import com.mikepenz.fastadapter.app.utils.getThemeColor
1414
import com.mikepenz.fastadapter.items.BaseItem
1515
import com.mikepenz.fastadapter.items.BaseItemFactory
1616
import com.mikepenz.fastadapter.ui.utils.FastAdapterUIUtils

app/src/main/java/com/mikepenz/fastadapter/app/model/ModelIconItem.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package com.mikepenz.fastadapter.app.model
33
import android.view.View
44
import android.widget.TextView
55
import androidx.recyclerview.widget.RecyclerView
6-
import com.mikepenz.aboutlibraries.util.getThemeColor
76
import com.mikepenz.fastadapter.app.R
7+
import com.mikepenz.fastadapter.app.utils.getThemeColor
88
import com.mikepenz.fastadapter.items.ModelAbstractItem
99
import com.mikepenz.iconics.IconicsDrawable
1010
import com.mikepenz.iconics.utils.colorInt
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.mikepenz.fastadapter.app.utils
2+
3+
import android.content.Context
4+
import android.util.TypedValue
5+
import androidx.annotation.AttrRes
6+
import androidx.annotation.ColorInt
7+
import androidx.annotation.RestrictTo
8+
import androidx.core.content.ContextCompat
9+
import androidx.core.content.res.ResourcesCompat
10+
11+
internal fun Context.getThemeColor(attr: Int): Int {
12+
val tv = TypedValue()
13+
return if (this.theme.resolveAttribute(attr, tv, true)) {
14+
if (tv.resourceId != 0) {
15+
ContextCompat.getColor(this, tv.resourceId)
16+
} else {
17+
tv.data
18+
}
19+
} else {
20+
0
21+
}
22+
}
23+
24+
25+
/**
26+
* a helper method to get the color from an attribute
27+
* @hide
28+
*/
29+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
30+
fun Context.getThemeColor(@AttrRes attr: Int, @ColorInt def: Int = 0): Int {
31+
val tv = TypedValue()
32+
return if (theme.resolveAttribute(attr, tv, true)) {
33+
if (tv.resourceId != 0) ResourcesCompat.getColor(resources, tv.resourceId, theme) else tv.data
34+
} else def
35+
}

build.gradle

+9-9
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ buildscript {
44

55
ext {
66
release = [
7-
versionName: "5.5.1",
8-
versionCode: 5051
7+
versionName: "5.6.0",
8+
versionCode: 5060
99
]
1010

1111
setup = [
12-
gradleTools: '7.0.2',
13-
compileSdk : 30,
12+
gradleTools: '7.0.3',
13+
compileSdk : 31,
1414
buildTools : "31.0.0",
1515
minSdk : 16,
1616
targetSdk : 30
@@ -19,18 +19,18 @@ buildscript {
1919
versions = [
2020
recyclerView : '1.2.1',
2121
material : '1.4.0',
22-
appcompat : '1.3.1',
22+
appcompat : '1.4.0',
2323
drawerlayout : '1.1.0',
2424
constraintLayout: '2.1.0',
2525
cardview : '1.0.0',
26-
kotlin : '1.5.30',
26+
kotlin : '1.5.31',
2727
iconics : '5.2.8',
28-
materialdrawer : '8.4.3',
29-
aboutlib : '8.9.1',
28+
materialdrawer : '8.4.5',
29+
aboutlib : '10.0.0-b01',
3030
roboelectric : '4.6.1',
3131
detekt : '1.18.1',
3232
paging : "2.1.2",
33-
room : "2.4.0-alpha04",
33+
room : "2.4.0-beta02",
3434
lifecycle : "2.3.1"
3535
]
3636
}

0 commit comments

Comments
 (0)