diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_customer.xml +++ b/app/src/main/res/layout/activity_search_customer.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_customer.xml +++ b/app/src/main/res/layout/activity_search_customer.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_entrust.xml b/app/src/main/res/layout/activity_search_entrust.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_entrust.xml +++ b/app/src/main/res/layout/activity_search_entrust.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_customer.xml +++ b/app/src/main/res/layout/activity_search_customer.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_entrust.xml b/app/src/main/res/layout/activity_search_entrust.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_entrust.xml +++ b/app/src/main/res/layout/activity_search_entrust.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml index 73f53de..93ed590 100644 --- a/app/src/main/res/layout/activity_search_equipment.xml +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -38,11 +38,10 @@ android:src="@drawable/ic_delete" /> - + app:max_select="1" /> \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_customer.xml +++ b/app/src/main/res/layout/activity_search_customer.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_entrust.xml b/app/src/main/res/layout/activity_search_entrust.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_entrust.xml +++ b/app/src/main/res/layout/activity_search_entrust.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml index 73f53de..93ed590 100644 --- a/app/src/main/res/layout/activity_search_equipment.xml +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -38,11 +38,10 @@ android:src="@drawable/ic_delete" /> - + app:max_select="1" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_meterage_train.xml b/app/src/main/res/layout/activity_search_meterage_train.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_meterage_train.xml +++ b/app/src/main/res/layout/activity_search_meterage_train.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_customer.xml +++ b/app/src/main/res/layout/activity_search_customer.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_entrust.xml b/app/src/main/res/layout/activity_search_entrust.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_entrust.xml +++ b/app/src/main/res/layout/activity_search_entrust.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml index 73f53de..93ed590 100644 --- a/app/src/main/res/layout/activity_search_equipment.xml +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -38,11 +38,10 @@ android:src="@drawable/ic_delete" /> - + app:max_select="1" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_meterage_train.xml b/app/src/main/res/layout/activity_search_meterage_train.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_meterage_train.xml +++ b/app/src/main/res/layout/activity_search_meterage_train.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_standard_device.xml b/app/src/main/res/layout/activity_search_standard_device.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_standard_device.xml +++ b/app/src/main/res/layout/activity_search_standard_device.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_customer.xml +++ b/app/src/main/res/layout/activity_search_customer.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_entrust.xml b/app/src/main/res/layout/activity_search_entrust.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_entrust.xml +++ b/app/src/main/res/layout/activity_search_entrust.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml index 73f53de..93ed590 100644 --- a/app/src/main/res/layout/activity_search_equipment.xml +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -38,11 +38,10 @@ android:src="@drawable/ic_delete" /> - + app:max_select="1" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_meterage_train.xml b/app/src/main/res/layout/activity_search_meterage_train.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_meterage_train.xml +++ b/app/src/main/res/layout/activity_search_meterage_train.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_standard_device.xml b/app/src/main/res/layout/activity_search_standard_device.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_standard_device.xml +++ b/app/src/main/res/layout/activity_search_standard_device.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_search_rv_l.xml b/app/src/main/res/layout/item_search_rv_l.xml index b2b1504..8018d7e 100644 --- a/app/src/main/res/layout/item_search_rv_l.xml +++ b/app/src/main/res/layout/item_search_rv_l.xml @@ -1,20 +1,15 @@ - - - - \ No newline at end of file + android:paddingHorizontal="@dimen/dp_10" + android:paddingVertical="@dimen/dp_5" + android:text="型号A" + android:textColor="@color/gray" + android:textSize="@dimen/sp_12" + app:qmui_backgroundColor="@color/mainBackground" + app:qmui_borderColor="@color/white" + app:qmui_borderWidth="1dp" + app:qmui_radius="12.5dp" /> \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e142ec1..17e74d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,4 +122,6 @@ implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.8' //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt index 5f5253e..d62635f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/SearchType.kt @@ -5,4 +5,29 @@ * 搜索仪器设备 * */ const val Equipment = "0" + + /** + * 搜索标准装置 + * */ + const val StandardDevice = "1" + + /** + * 搜索委托书需求 + * */ + const val Entrust = "2" + + /** + * 搜索能力 + * */ + const val Capability = "3" + + /** + * 搜索计量培训 + * */ + const val MeterageTrain = "4" + + /** + * 搜索客户 + * */ + const val Customer = "5" } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt index e5cd6be..7ecff7c 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_capability.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCapabilityActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031103) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Capability + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Capability) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_capability @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Capability) + weakReferenceHandler.sendEmptyMessage(2023031103) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt index 7e23b3a..22a1ab5 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_customer.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchCustomerActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031105) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Customer + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Customer) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_customer @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Customer) + weakReferenceHandler.sendEmptyMessage(2023031105) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt index d8d28dc..dc40e94 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_entrust.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchEntrustActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031102) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.Entrust + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.Entrust) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_entrust @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.Entrust) + weakReferenceHandler.sendEmptyMessage(2023031102) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt index 3551790..0952071 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -1,17 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar import com.casic.xz.meterage.utils.DataBaseManager import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter -import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_equipment.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -21,34 +24,36 @@ * */ class SearchEquipmentActivity : KotlinBaseActivity() { + private lateinit var inflater: LayoutInflater private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var historyAdapter: NormalRecyclerAdapter + private lateinit var historyAdapter: TagAdapter private var dataBeans: MutableList = ArrayList() private var isRefresh = false override fun initData() { + inflater = LayoutInflater.from(this) weakReferenceHandler = WeakReferenceHandler { if (it.what == 2023031001) { if (isRefresh) { - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } else { - historyAdapter = object : - NormalRecyclerAdapter( - R.layout.item_search_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: SearchHistoryBean - ) { - viewHolder.setText(R.id.searchTagView, item.keywords) + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView } } - historyRecyclerView.adapter = historyAdapter - historyAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked(position: Int, t: SearchHistoryBean) { - navigatePageTo(t.keywords) - } - }) + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } } } true @@ -89,7 +94,7 @@ override fun onConfirmClick() { DataBaseManager.get.deleteHistoryByType(SearchType.Equipment) dataBeans.clear() - historyAdapter.notifyDataSetChanged() + historyAdapter.notifyDataChanged() } }).build().show() } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt index d58c9eb..b2c1e36 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_meterage_train.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,74 @@ * */ class SearchMeterageTrainActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031104) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.MeterageTrain + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.MeterageTrain) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_meterage_train @@ -38,6 +107,7 @@ override fun onResume() { super.onResume() - //TODO 流式布局显示查询记录Tag? + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.MeterageTrain) + weakReferenceHandler.sendEmptyMessage(2023031104) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt index 56633bb..5897fcd 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceActivity.kt @@ -1,10 +1,20 @@ package com.casic.xz.meterage.view.search +import android.view.LayoutInflater +import android.view.View import com.casic.xz.meterage.R +import com.casic.xz.meterage.bean.SearchHistoryBean import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.utils.DataBaseManager +import com.casic.xz.meterage.utils.SearchType import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_search_standard_device.* import kotlinx.android.synthetic.main.include_search_input_title.* @@ -13,15 +23,80 @@ * */ class SearchStandardDeviceActivity : KotlinBaseActivity() { - override fun initData() { + private lateinit var inflater: LayoutInflater + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var historyAdapter: TagAdapter + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + override fun initData() { + inflater = LayoutInflater.from(this) + weakReferenceHandler = WeakReferenceHandler { + if (it.what == 2023031101) { + if (isRefresh) { + historyAdapter.notifyDataChanged() + } else { + historyAdapter = object : TagAdapter(dataBeans) { + override fun getView( + parent: FlowLayout?, position: Int, bean: SearchHistoryBean + ): View { + val tagView = inflater.inflate( + R.layout.item_search_rv_l, tagFlowLayout, false + ) as QMUIRoundButton + tagView.text = bean.keywords + return tagView + } + } + tagFlowLayout.adapter = historyAdapter + tagFlowLayout.setOnTagClickListener { _, position, _ -> + inputView.setText(dataBeans[position].keywords) + navigatePageTo(inputView.text.toString()) + true + } + } + } + true + } + } + + override fun onResume() { + super.onResume() + dataBeans = DataBaseManager.get.queryHistoryByType(SearchType.StandardDevice) + weakReferenceHandler.sendEmptyMessage(2023031101) } override fun initEvent() { leftBackView.setOnClickListener { finish() } searchTextView.setOnClickListener { + if (!inputView.text.isNullOrBlank()) { + DataBaseManager.get.addSearchHistory( + inputView.text.toString(), SearchType.StandardDevice + ) + } + navigatePageTo(inputView.text.toString()) } + + deleteHistoryView.setOnClickListener { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定将所有搜索记录删除?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + DataBaseManager.get.deleteHistoryByType(SearchType.StandardDevice) + dataBeans.clear() + historyAdapter.notifyDataChanged() + } + }).build().show() + } } override fun initLayoutView(): Int = R.layout.activity_search_standard_device @@ -35,9 +110,4 @@ initLayoutImmersionBar(rootView) inputView.hint = "查询标准装置名称、编号" } - - override fun onResume() { - super.onResume() - //TODO 流式布局显示查询记录Tag? - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_capability.xml b/app/src/main/res/layout/activity_search_capability.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_capability.xml +++ b/app/src/main/res/layout/activity_search_capability.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_customer.xml +++ b/app/src/main/res/layout/activity_search_customer.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_entrust.xml b/app/src/main/res/layout/activity_search_entrust.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_entrust.xml +++ b/app/src/main/res/layout/activity_search_entrust.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml index 73f53de..93ed590 100644 --- a/app/src/main/res/layout/activity_search_equipment.xml +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -38,11 +38,10 @@ android:src="@drawable/ic_delete" /> - + app:max_select="1" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_meterage_train.xml b/app/src/main/res/layout/activity_search_meterage_train.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_meterage_train.xml +++ b/app/src/main/res/layout/activity_search_meterage_train.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_standard_device.xml b/app/src/main/res/layout/activity_search_standard_device.xml index 45694fb..93ed590 100644 --- a/app/src/main/res/layout/activity_search_standard_device.xml +++ b/app/src/main/res/layout/activity_search_standard_device.xml @@ -1,5 +1,6 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_search_rv_l.xml b/app/src/main/res/layout/item_search_rv_l.xml index b2b1504..8018d7e 100644 --- a/app/src/main/res/layout/item_search_rv_l.xml +++ b/app/src/main/res/layout/item_search_rv_l.xml @@ -1,20 +1,15 @@ - - - - \ No newline at end of file + android:paddingHorizontal="@dimen/dp_10" + android:paddingVertical="@dimen/dp_5" + android:text="型号A" + android:textColor="@color/gray" + android:textSize="@dimen/sp_12" + app:qmui_backgroundColor="@color/mainBackground" + app:qmui_borderColor="@color/white" + app:qmui_borderWidth="1dp" + app:qmui_radius="12.5dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_train_student_rv_l.xml b/app/src/main/res/layout/item_train_student_rv_l.xml index 20ecc97..e081b20 100644 --- a/app/src/main/res/layout/item_train_student_rv_l.xml +++ b/app/src/main/res/layout/item_train_student_rv_l.xml @@ -27,7 +27,7 @@ android:gravity="center" android:text="张三" android:textColor="@color/black" - android:textSize="@dimen/sp_18" /> + android:textSize="@dimen/sp_16" /> + android:textSize="@dimen/sp_12" />