diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt index 0485bc183..90489e643 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt @@ -123,7 +123,6 @@ class MainActivity : BaseActivity() { ) viewModel.user.observe(this) { user -> adapter.title = user.profile?.name ?: "" - adapter.notifyItemChanged(0) val index = adapter.data.indexOfFirst { it.identifier == "stats" } adapter.data[index].detailText = getString(R.string.user_level, user.stats?.lvl ?: 0) adapter.notifyItemChanged(index+1) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt index 696cd020f..53a8515b0 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt @@ -32,6 +32,7 @@ class SettingsActivity: BaseActivity } adapter.data = buildSettings() + adapter.title = getString(R.string.settings) lifecycleScope.launch { appStateManager.isAppConnected.collect { adapter.isDisconnected = !it @@ -49,13 +50,6 @@ class SettingsActivity: BaseActivity private fun buildSettings(): List { return listOf( - SettingsItem( - "header", - getString(R.string.settings), - SettingsItem.Types.HEADER, - null - ) { - }, SettingsItem( "sync", getString(R.string.sync_data), diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/BaseAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/BaseAdapter.kt index 1c9ebfc34..35826ab21 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/BaseAdapter.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/BaseAdapter.kt @@ -10,6 +10,11 @@ import com.habitrpg.wearos.habitica.ui.viewHolders.SpacerViewHolder abstract class BaseAdapter : RecyclerView.Adapter() { var title: String = "" + set(value) { + val previous = field + field = value + notifyItemChanged(0) + } var onRefresh: (() -> Unit)? = null var isDisconnected = false set(value) { @@ -31,13 +36,8 @@ abstract class BaseAdapter : RecyclerView.Adapter() { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is HubViewHolder) { - holder.bind(getItemAt(position - 1)) + holder.bind(getItemAt(position)) } else { super.onBindViewHolder(holder, position) } } - private fun getItemAt(position: Int) = data.filter { !it.isHidden }[position] override fun getItemViewType(position: Int) = if (position == 0) TYPE_HEADER else 1 } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt index 6e08aa643..3f6e0f52b 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/SettingsAdapter.kt @@ -29,10 +29,10 @@ class SettingsAdapter: BaseAdapter() { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (holder) { is SettingsViewHolder -> { - holder.bind(data[position]) + holder.bind(getItemAt(position)) } is FooterViewHolder -> { - holder.bind(data[position].title) + holder.bind(getItemAt(position).title) } is SpacerViewHolder -> { holder.bind(16.dpToPx(holder.itemView.context)) @@ -42,7 +42,8 @@ class SettingsAdapter: BaseAdapter() { } override fun getItemViewType(position: Int): Int { - val item = data[position] + if (position == 0) return TYPE_HEADER + val item = getItemAt(position) return when (item.type) { SettingsItem.Types.HEADER -> TYPE_HEADER SettingsItem.Types.FOOTER -> 1 diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt index a41703e59..b64e4f429 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt @@ -23,7 +23,7 @@ open class TaskListAdapter : BaseAdapter() { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is TaskViewHolder) { - val item = data[position - 1] as Task + val item = getItemAt(position) as Task holder.bind(item) holder.onTaskScore = { onTaskScore?.invoke(item) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt index 80b021b00..3d7cd9ab0 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt @@ -17,6 +17,7 @@ class HabiticaRecyclerView @JvmOverloads constructor( post { setPadding(0, (height * 0.1).toInt(), 0, (height * 0.25).toInt()) scrollToPosition(0) + requestFocus() } } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt index 822578f7a..6ce11019d 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt @@ -11,6 +11,11 @@ class HabiticaScrollView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null ) : NestedScrollView(context, attrs) { + override fun onAttachedToWindow() { + super.onAttachedToWindow() + requestFocus() + } + override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { super.onLayout(changed, l, t, r, b) if (changed) {