Skip to content

Commit f598d1e

Browse files
committed
[DashboardAdapter] Fixed NullPointerException
1 parent bdecb6c commit f598d1e

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

app/src/main/java/de/davis/passwordmanager/ui/dashboard/DashboardAdapter.kt

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class DashboardAdapter(private val onUpdate: (DashboardAdapter) -> Unit) :
2424

2525
var filter: String = ""
2626

27-
private lateinit var tracker: SelectionTracker<Long>
27+
private var tracker: SelectionTracker<Long>? = null
2828

2929
init {
3030
setHasStableIds(true)
@@ -37,7 +37,12 @@ class DashboardAdapter(private val onUpdate: (DashboardAdapter) -> Unit) :
3737
override fun getItemCount(): Int = itemManager.items.size
3838

3939
override fun onBindViewHolder(holder: BasicViewHolder<Item>, position: Int) {
40-
itemManager.bind(holder, filter, position, tracker.isSelected(getItemId(position)))
40+
itemManager.bind(
41+
holder,
42+
filter,
43+
position,
44+
tracker?.isSelected(getItemId(position)) ?: false
45+
)
4146
}
4247

4348
override fun getItemViewType(position: Int): Int {
@@ -82,28 +87,28 @@ class DashboardAdapter(private val onUpdate: (DashboardAdapter) -> Unit) :
8287
return enableSelection
8388
}
8489

85-
}).build()
90+
}).build().also {
91+
it.addObserver(object : SelectionTracker.SelectionObserver<Long>() {
92+
var oldSelection: List<Long>? = null
8693

87-
tracker.addObserver(object : SelectionTracker.SelectionObserver<Long>() {
88-
var oldSelection: List<Long>? = null
94+
override fun onSelectionChanged() {
95+
if (it.selection.toList() == oldSelection)
96+
return
8997

90-
override fun onSelectionChanged() {
91-
if (tracker.selection.toList() == oldSelection)
92-
return
93-
94-
onSelectionChanged(getSelectedElements())
95-
oldSelection = tracker.selection.toList()
96-
}
97-
})
98+
onSelectionChanged(getSelectedElements())
99+
oldSelection = it.selection.toList()
100+
}
101+
})
102+
}
98103
}
99104

100105
fun getSelectedElements(): List<Item> {
101-
return tracker.selection
102-
.map { itemManager.getElementById(it) }
103-
.mapNotNull { it }.toList()
106+
return tracker?.selection
107+
?.map { itemManager.getElementById(it) }
108+
?.mapNotNull { it }?.toList() ?: emptyList()
104109
}
105110

106-
fun clearSelection() = tracker.clearSelection()
111+
fun clearSelection() = tracker?.clearSelection()
107112

108113
private fun configureRecyclerView() = recyclerView.apply {
109114
layoutManager = itemManager.getLayoutManager(recyclerView.context)
@@ -135,10 +140,10 @@ class DashboardAdapter(private val onUpdate: (DashboardAdapter) -> Unit) :
135140
}
136141

137142
fun onSaveInstanceState(bundle: Bundle) {
138-
tracker.onSaveInstanceState(bundle)
143+
tracker?.onSaveInstanceState(bundle)
139144
}
140145

141146
fun onRestoreInstanceState(bundle: Bundle?) {
142-
tracker.onRestoreInstanceState(bundle)
147+
tracker?.onRestoreInstanceState(bundle)
143148
}
144149
}

0 commit comments

Comments
 (0)