Skip to content

Commit

Permalink
Fix crashing on deleting measure
Browse files Browse the repository at this point in the history
  • Loading branch information
Hamza417 committed Aug 7, 2024
1 parent 194cf7b commit ec4af73
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import app.simple.positional.util.ColorUtils.resolveAttrColor
import app.simple.positional.util.ConditionUtils.isZero
import app.simple.positional.util.HtmlHelper
import app.simple.positional.util.TimeFormatter.formatDate
import app.simple.positional.util.ViewUtils.gone
import app.simple.positional.util.ViewUtils.visible

class AdapterMeasures(private val list: ArrayList<Measure>) :
RecyclerView.Adapter<VerticalListViewHolder>() {
Expand All @@ -36,22 +38,28 @@ class AdapterMeasures(private val list: ArrayList<Measure>) :
}
}

override fun onBindViewHolder(holder: VerticalListViewHolder, position_: Int) {
val position = position_ - 1
override fun onBindViewHolder(holder: VerticalListViewHolder, holderPosition: Int) {
val position = holderPosition.minus(1)

if (holder is Holder) {
holder.name.text = list[position].name
holder.note.text = list[position].note
holder.date.text = list[position].dateCreated.formatDate()

if (holder.note.text.isEmpty()) {
holder.note.gone(false)
} else {
holder.note.visible(false)
}

if (list[position].dateCreated == MeasurePreferences.getLastSelectedMeasure()) {
holder.name.setTextColor(holder.itemView.context.resolveAttrColor(R.attr.colorAppAccent))
} else {
holder.name.setTextColor(ContextCompat.getColor(holder.itemView.context, R.color.textPrimary))
}

holder.menu.setOnClickListener {
adapterMeasuresCallback.onMeasureMenuClicked(list[position], it)
adapterMeasuresCallback.onMeasureMenuClicked(list[position], it, position)
}

holder.container.setOnClickListener {
Expand All @@ -63,10 +71,7 @@ class AdapterMeasures(private val list: ArrayList<Measure>) :
}

override fun getItemCount(): Int {
return when {
list.isEmpty() -> 0
else -> list.size.plus(1)
}
return list.size.plus(1)
}

override fun getItemViewType(position: Int): Int {
Expand All @@ -76,10 +81,14 @@ class AdapterMeasures(private val list: ArrayList<Measure>) :
}
}

fun deleteMeasure(measure: Measure) {
val index = list.indexOf(measure)
list.remove(measure)
notifyItemRemoved(index + 1)
fun deleteMeasure(position: Int) {
list.removeAt(position)
notifyItemRemoved(position.plus(1))
notifyItemChanged(0)
}

fun isEmpty(): Boolean {
return list.isEmpty()
}

inner class Holder(itemView: View) : VerticalListViewHolder(itemView) {
Expand All @@ -101,7 +110,7 @@ class AdapterMeasures(private val list: ArrayList<Measure>) :
companion object {
interface AdapterMeasuresCallback {
fun onMeasureClicked(measure: Measure)
fun onMeasureMenuClicked(measure: Measure, view: View)
fun onMeasureMenuClicked(measure: Measure, view: View, position: Int)
}
}
}
10 changes: 8 additions & 2 deletions app/src/full/java/app/simple/positional/ui/subpanels/Measures.kt
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class Measures : ScopedFragment() {
MeasurePreferences.setLastSelectedMeasure(measure.dateCreated)
}

override fun onMeasureMenuClicked(measure: Measure, view: View) {
override fun onMeasureMenuClicked(measure: Measure, view: View, position: Int) {
val popup = PopupTrailsMenu(
layoutInflater.inflate(R.layout.popup_trails,
DynamicCornerLinearLayout(requireContext())), view)
Expand All @@ -77,7 +77,13 @@ class Measures : ScopedFragment() {
DeletePopupMenu(view) {
measureViewModel.deleteMeasure(measure) {
requireActivity().runOnUiThread {
adapterMeasures.deleteMeasure(measure)
adapterMeasures.deleteMeasure(position).also {
if (adapterMeasures.isEmpty()) {
art.visible(true)
} else {
art.invisible(true)
}
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,36 +36,38 @@ class AdapterTrails(private val list: ArrayList<TrailEntry>) :
}
}

override fun onBindViewHolder(holder: VerticalListViewHolder, position_: Int) {
override fun onBindViewHolder(holder: VerticalListViewHolder, holderPosition: Int) {
val position = holderPosition - 1

val position = position_ - 1
when (holder) {
is Holder -> {
holder.name.text = list[position].trailName
holder.note.text = list[position].trailNote
holder.date.text = list[position].dateCreated.formatDate()

if (holder is Holder) {
holder.name.text = list[position].trailName
holder.note.text = list[position].trailNote
holder.date.text = list[position].dateCreated.formatDate()
if (list[position].trailName == TrailPreferences.getCurrentTrail()) {
holder.name.setTextColor(holder.itemView.context.resolveAttrColor(R.attr.colorAppAccent))
} else {
holder.name.setTextColor(ContextCompat.getColor(holder.itemView.context, R.color.textPrimary))
}

if (list[position].trailName == TrailPreferences.getCurrentTrail()) {
holder.name.setTextColor(holder.itemView.context.resolveAttrColor(R.attr.colorAppAccent))
} else {
holder.name.setTextColor(ContextCompat.getColor(holder.itemView.context, R.color.textPrimary))
}
holder.menu.setOnClickListener {
adapterTrailsCallback.onTrailMenu(list[position], it)
}

holder.menu.setOnClickListener {
adapterTrailsCallback.onTrailMenu(list[position], it)
}
holder.container.setOnClickListener {
adapterTrailsCallback.onTrailClicked(list[position].trailName)
}

holder.container.setOnClickListener {
adapterTrailsCallback.onTrailClicked(list[position].trailName)
}

} else if (holder is Header) {
holder.total.text = HtmlHelper.fromHtml("<b>${holder.itemView.context.getString(R.string.total)}</b> ${list.size}")
is Header -> {
holder.total.text = HtmlHelper.fromHtml("<b>${holder.itemView.context.getString(R.string.total)}</b> ${list.size}")
}
}
}

override fun getItemCount(): Int {
return if(list.isNullOrEmpty()) {
return if (list.isEmpty()) {
0
} else {
list.size + 1
Expand Down
6 changes: 2 additions & 4 deletions app/src/main/res/layout/adapter_trails.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:layout_marginBottom="8dp"
android:fontFamily="@font/medium"
android:textColor="@color/textPrimary"
android:textSize="@dimen/trail_name_text_size"
Expand All @@ -27,7 +26,7 @@
android:layout_marginEnd="32dp"
android:fontFamily="@font/regular"
android:textColor="@color/textTertiary"
android:textSize="@dimen/description_text_size"
android:textSize="@dimen/options_item_text_size"
app:layout_constraintBottom_toTopOf="@id/trails_date"
app:layout_constraintEnd_toStartOf="@+id/menu"
app:layout_constraintStart_toStartOf="parent"
Expand All @@ -37,10 +36,9 @@
android:id="@+id/trails_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="32dp"
android:fontFamily="@font/regular"
android:textColor="@color/textTertiary"
android:textColor="?attr/colorAppAccent"
android:textSize="@dimen/description_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/menu"
Expand Down

0 comments on commit ec4af73

Please sign in to comment.