save position of SettingsFragmentActionsRecycler (fixes #57)

This commit is contained in:
Josia Pietsch 2024-11-03 21:31:20 +01:00
parent 6376845dc9
commit c509031954
Signed by: jrpie
GPG key ID: E70B571D66986A2D

View file

@ -3,7 +3,6 @@ package de.jrpie.android.launcher.ui.settings.actions
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -33,6 +32,7 @@ import de.jrpie.android.launcher.ui.list.ListActivity
*/ */
class SettingsFragmentActionsRecycler : Fragment(), UIObject { class SettingsFragmentActionsRecycler : Fragment(), UIObject {
private var savedScrollPosition = 0
private var sharedPreferencesListener = private var sharedPreferencesListener =
SharedPreferences.OnSharedPreferenceChangeListener { _, _ -> SharedPreferences.OnSharedPreferenceChangeListener { _, _ ->
@ -60,6 +60,7 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = actionViewManager layoutManager = actionViewManager
adapter = actionViewAdapter adapter = actionViewAdapter
} }
LauncherPreferences.getSharedPreferences() LauncherPreferences.getSharedPreferences()
.registerOnSharedPreferenceChangeListener(sharedPreferencesListener) .registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
@ -73,6 +74,20 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
super.onDestroy() super.onDestroy()
} }
override fun onPause() {
savedScrollPosition =
(binding.settingsActionsRview.layoutManager as LinearLayoutManager)
.findFirstCompletelyVisibleItemPosition()
super.onPause()
}
override fun onResume() {
super.onResume()
(binding.settingsActionsRview.layoutManager)?.scrollToPosition(savedScrollPosition)
}
} }
class ActionsRecyclerAdapter(val activity: Activity) : class ActionsRecyclerAdapter(val activity: Activity) :
@ -83,7 +98,8 @@ class ActionsRecyclerAdapter(val activity: Activity) :
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
View.OnClickListener { View.OnClickListener {
var textView: TextView = itemView.findViewById(R.id.settings_actions_row_name) var textView: TextView = itemView.findViewById(R.id.settings_actions_row_name)
var descriptionTextView: TextView = itemView.findViewById(R.id.settings_actions_row_description) var descriptionTextView: TextView =
itemView.findViewById(R.id.settings_actions_row_description)
var img: ImageView = itemView.findViewById(R.id.settings_actions_row_icon_img) var img: ImageView = itemView.findViewById(R.id.settings_actions_row_icon_img)
var chooseButton: Button = itemView.findViewById(R.id.settings_actions_row_button_choose) var chooseButton: Button = itemView.findViewById(R.id.settings_actions_row_button_choose)
var removeAction: ImageView = itemView.findViewById(R.id.settings_actions_row_remove) var removeAction: ImageView = itemView.findViewById(R.id.settings_actions_row_remove)