From b74f9136b91a9f51c3dcb1a3d52c1445dd0d4bae Mon Sep 17 00:00:00 2001 From: kamathprasad9 <54414375+kamathprasad9@users.noreply.github.com> Date: Sun, 6 Oct 2024 14:01:00 -0400 Subject: [PATCH] Fix plate name for optional fields --- .../coordinate/adapter/FieldsAdapter.kt | 5 +++- .../grid_creator/GridCreatorTemplateFields.kt | 24 ++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/wheatgenetics/coordinate/adapter/FieldsAdapter.kt b/app/src/main/java/org/wheatgenetics/coordinate/adapter/FieldsAdapter.kt index 92f63071..5a987193 100644 --- a/app/src/main/java/org/wheatgenetics/coordinate/adapter/FieldsAdapter.kt +++ b/app/src/main/java/org/wheatgenetics/coordinate/adapter/FieldsAdapter.kt @@ -18,7 +18,8 @@ import org.wheatgenetics.coordinate.optionalField.NonNullOptionalFields class FieldsAdapter(private val listener: RequiredFieldsCompleteListener, private val requiredName: String, private val fields: NonNullOptionalFields) : ListAdapter(DiffCallback()) { - private val values = hashMapOf() + // linkedMapOf to preserve the order when doing 'get' + private val values = linkedMapOf() init { fields.forEach { @@ -83,6 +84,8 @@ class FieldsAdapter(private val listener: RequiredFieldsCompleteListener, privat } } + fun getAllFieldValues(): Map = values.toMap() + class DiffCallback : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: BaseOptionalField, newItem: BaseOptionalField): Boolean { diff --git a/app/src/main/java/org/wheatgenetics/coordinate/fragments/grid_creator/GridCreatorTemplateFields.kt b/app/src/main/java/org/wheatgenetics/coordinate/fragments/grid_creator/GridCreatorTemplateFields.kt index 1ad85649..9a299b05 100644 --- a/app/src/main/java/org/wheatgenetics/coordinate/fragments/grid_creator/GridCreatorTemplateFields.kt +++ b/app/src/main/java/org/wheatgenetics/coordinate/fragments/grid_creator/GridCreatorTemplateFields.kt @@ -7,7 +7,9 @@ import android.content.Intent import android.os.Bundle import android.view.MenuItem import android.view.View -import android.widget.* +import android.widget.Button +import android.widget.EditText +import android.widget.TextView import androidx.core.view.children import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController @@ -38,6 +40,8 @@ class GridCreatorTemplateFields : Fragment(R.layout.fragment_grid_creator_fields private var mProjectsTable: ProjectsTable? = null private var mEntriesTable: EntriesTable? = null + private lateinit var fieldsAdapter: FieldsAdapter + private val mTemplate: TemplateModel? by lazy { mTemplatesTable?.load()?.find { it.title == args.title } } @@ -169,12 +173,16 @@ class GridCreatorTemplateFields : Fragment(R.layout.fragment_grid_creator_fields val fields = NonNullOptionalFields(this) - val listView = view?.findViewById(R.id.frag_grid_creator_fields_lv) +// val listView = view?.findViewById(R.id.frag_grid_creator_fields_lv) - listView?.children?.forEach { - val nameTextView = it.findViewById(R.id.list_item_field_tv) - val valueEditText = it.findViewById(R.id.list_item_field_et) - fields.add(nameTextView.text.toString(), valueEditText.text.toString(), null) +// listView?.children?.forEach { +// val nameTextView = it.findViewById(R.id.list_item_field_tv) +// val valueEditText = it.findViewById(R.id.list_item_field_et) +// fields.add(nameTextView.text.toString(), valueEditText.text.toString(), null) +// } + + fieldsAdapter.getAllFieldValues().forEach { (name, value) -> + fields.add(name, value, null) } return fields @@ -233,7 +241,7 @@ class GridCreatorTemplateFields : Fragment(R.layout.fragment_grid_creator_fields } } - val adapter = FieldsAdapter(this, requiredName, fields) + fieldsAdapter = FieldsAdapter(this, requiredName, fields) val listView = view?.findViewById(R.id.frag_grid_creator_fields_lv) @@ -243,7 +251,7 @@ class GridCreatorTemplateFields : Fragment(R.layout.fragment_grid_creator_fields listView?.layoutManager = LinearLayoutManager(act) - listView?.adapter = adapter + listView?.adapter = fieldsAdapter (listView?.adapter as FieldsAdapter).submitList(fields.map { it })