From 90bf7601bd05edc468220e41a612d390e619805b Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 30 Apr 2022 17:28:07 -0400 Subject: [PATCH 1/2] Make EuiccProfileAdapter a inner class We need to access the internals (later) --- .../openeuicc/ui/EuiccManagementFragment.kt | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt index db5d1f8..e43055e 100644 --- a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt +++ b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt @@ -75,11 +75,8 @@ class EuiccManagementFragment : Fragment(), EuiccFragmentMarker, EuiccProfilesCh } } } -} -class EuiccProfileAdapter(var profiles: List>) : - RecyclerView.Adapter() { - data class ViewHolder(val binding: EuiccProfileBinding) : RecyclerView.ViewHolder(binding.root) { + inner class ViewHolder(val binding: EuiccProfileBinding) : RecyclerView.ViewHolder(binding.root) { init { binding.iccid.setOnClickListener { if (binding.iccid.transformationMethod == null) { @@ -91,26 +88,28 @@ class EuiccProfileAdapter(var profiles: List>) : } } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val binding = - EuiccProfileBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return ViewHolder(binding) - } + inner class EuiccProfileAdapter(var profiles: List>) : RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val binding = + EuiccProfileBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return ViewHolder(binding) + } - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - // TODO: The library is not exposing the nicknames. Expose them so that we can do something here. - holder.binding.name.text = profiles[position]["NAME"] - holder.binding.state.setText( - if (profiles[position]["STATE"]?.lowercase() == "enabled") { - R.string.enabled - } else { - R.string.disabled - } - ) - holder.binding.provider.text = profiles[position]["PROVIDER_NAME"] - holder.binding.iccid.text = profiles[position]["ICCID"] - holder.binding.iccid.transformationMethod = PasswordTransformationMethod.getInstance() - } + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + // TODO: The library is not exposing the nicknames. Expose them so that we can do something here. + holder.binding.name.text = profiles[position]["NAME"] + holder.binding.state.setText( + if (profiles[position]["STATE"]?.lowercase() == "enabled") { + R.string.enabled + } else { + R.string.disabled + } + ) + holder.binding.provider.text = profiles[position]["PROVIDER_NAME"] + holder.binding.iccid.text = profiles[position]["ICCID"] + holder.binding.iccid.transformationMethod = PasswordTransformationMethod.getInstance() + } - override fun getItemCount(): Int = profiles.size + override fun getItemCount(): Int = profiles.size + } } \ No newline at end of file From 95155d953a9418ca9beb7dbaccf644a429185ddd Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 30 Apr 2022 17:32:38 -0400 Subject: [PATCH 2/2] Move data binding to the view holder --- .../openeuicc/ui/EuiccManagementFragment.kt | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt index e43055e..f78ef77 100644 --- a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt +++ b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt @@ -76,7 +76,7 @@ class EuiccManagementFragment : Fragment(), EuiccFragmentMarker, EuiccProfilesCh } } - inner class ViewHolder(val binding: EuiccProfileBinding) : RecyclerView.ViewHolder(binding.root) { + inner class ViewHolder(private val binding: EuiccProfileBinding) : RecyclerView.ViewHolder(binding.root) { init { binding.iccid.setOnClickListener { if (binding.iccid.transformationMethod == null) { @@ -86,6 +86,24 @@ class EuiccManagementFragment : Fragment(), EuiccFragmentMarker, EuiccProfilesCh } } } + + private lateinit var profile: Map + + fun setProfile(profile: Map) { + this.profile = profile + // TODO: The library is not exposing the nicknames. Expose them so that we can do something here. + binding.name.text = profile["NAME"] + binding.state.setText( + if (profile["STATE"]?.lowercase() == "enabled") { + R.string.enabled + } else { + R.string.disabled + } + ) + binding.provider.text = profile["PROVIDER_NAME"] + binding.iccid.text = profile["ICCID"] + binding.iccid.transformationMethod = PasswordTransformationMethod.getInstance() + } } inner class EuiccProfileAdapter(var profiles: List>) : RecyclerView.Adapter() { @@ -96,18 +114,7 @@ class EuiccManagementFragment : Fragment(), EuiccFragmentMarker, EuiccProfilesCh } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - // TODO: The library is not exposing the nicknames. Expose them so that we can do something here. - holder.binding.name.text = profiles[position]["NAME"] - holder.binding.state.setText( - if (profiles[position]["STATE"]?.lowercase() == "enabled") { - R.string.enabled - } else { - R.string.disabled - } - ) - holder.binding.provider.text = profiles[position]["PROVIDER_NAME"] - holder.binding.iccid.text = profiles[position]["ICCID"] - holder.binding.iccid.transformationMethod = PasswordTransformationMethod.getInstance() + holder.setProfile(profiles[position]) } override fun getItemCount(): Int = profiles.size