diff --git a/app/src/main/java/com/kunzisoft/keepass/adapters/AnimatedItemsAdapter.kt b/app/src/main/java/com/kunzisoft/keepass/adapters/AnimatedItemsAdapter.kt index b9b9b2345..c678cd446 100644 --- a/app/src/main/java/com/kunzisoft/keepass/adapters/AnimatedItemsAdapter.kt +++ b/app/src/main/java/com/kunzisoft/keepass/adapters/AnimatedItemsAdapter.kt @@ -32,6 +32,20 @@ abstract class AnimatedItemsAdapter(val contex onListSizeChangedListener?.invoke(previousSize, itemsList.size) } + open fun putItem(item: Item) { + val previousSize = itemsList.size + if (itemsList.contains(item)) { + val index = itemsList.indexOf(item) + itemsList.removeAt(index) + itemsList.add(index, item) + notifyItemChanged(index) + } else { + itemsList.add(item) + notifyItemInserted(itemsList.indexOf(item)) + } + onListSizeChangedListener?.invoke(previousSize, itemsList.size) + } + fun onBindDeleteButton(holder: T, deleteButton: View, item: Item, position: Int) { deleteButton.apply { visibility = View.VISIBLE diff --git a/app/src/main/java/com/kunzisoft/keepass/adapters/EntryExtraFieldsItemsAdapter.kt b/app/src/main/java/com/kunzisoft/keepass/adapters/EntryExtraFieldsItemsAdapter.kt index d34c340ae..f45bd76c8 100644 --- a/app/src/main/java/com/kunzisoft/keepass/adapters/EntryExtraFieldsItemsAdapter.kt +++ b/app/src/main/java/com/kunzisoft/keepass/adapters/EntryExtraFieldsItemsAdapter.kt @@ -42,7 +42,7 @@ class EntryExtraFieldsItemsAdapter(context: Context) } private var mValueViewInputType: Int = 0 private var mLastFocused: Field? = null - private var mLastFocusedTimestamp: Long = 0 + private var mLastFocusedTimestamp: Long = 0L override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EntryExtraFieldViewHolder { val view = EntryExtraFieldViewHolder( @@ -97,35 +97,24 @@ class EntryExtraFieldsItemsAdapter(context: Context) } */ - private fun focusField(field: Field) { + private fun focusField(field: Field, force: Boolean = false) { mLastFocused = field - mLastFocusedTimestamp = System.currentTimeMillis() + mLastFocusedTimestamp = if (force) 0L else System.currentTimeMillis() + } + + override fun putItem(item: Field) { + focusField(item, true) + super.putItem(item) } private fun requestFocusOnLastTextFocused(textView: TextView, field: Field) { if (field == mLastFocused) { - if ((mLastFocusedTimestamp + 350L) > System.currentTimeMillis()) + if (mLastFocusedTimestamp == 0L || (mLastFocusedTimestamp + 350L) > System.currentTimeMillis()) textView.post { textView.requestFocus() } mLastFocused = null } } - fun putExtraField(field: Field) { - val previousSize = itemsList.size - if (itemsList.contains(field)) { - val index = itemsList.indexOf(field) - itemsList.removeAt(index) - itemsList.add(index, field) - focusField(field) - notifyItemChanged(index) - } else { - itemsList.add(field) - focusField(field) - notifyItemInserted(itemsList.indexOf(field)) - } - onListSizeChangedListener?.invoke(previousSize, itemsList.size) - } - inner class EntryExtraFieldViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { var extraFieldValueContainer: TextInputLayout = itemView.findViewById(R.id.entry_extra_field_value_container) var extraFieldValue: EditText = itemView.findViewById(R.id.entry_extra_field_value) diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt index 26673067a..208345d1a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt @@ -259,7 +259,7 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, fun putExtraField(extraField: Field) { extraFieldsContainerView.visibility = View.VISIBLE // TODO setError(R.string.error_label_exists) - extraFieldsAdapter.putExtraField(extraField) + extraFieldsAdapter.putItem(extraField) } /* -------------