From d0a0e8e242e293ad35dfbee1217f1103302818cd Mon Sep 17 00:00:00 2001 From: zuojincheng <lf_zuo@163.com> Date: 星期四, 03 四月 2025 10:22:48 +0800 Subject: [PATCH] refactor(generallibrary):重构卡片和用户搜索功能 --- generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt | 85 +++ generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt | 5 generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt | 6 generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt | 127 +++- generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt | 21 generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt | 8 generallibrary/src/main/res/layout/fragment_card.xml | 302 +++++++---- generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt | 105 ++- generallibrary/src/main/java/com/dayu/general/BaseApplication.kt | 2 README.md | 109 ++++ /dev/null | 108 ---- generallibrary/src/main/res/layout/activity_card_list.xml | 49 + generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt | 12 generallibrary/src/main/res/layout/item_user_list.xml | 26 generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt | 8 generallibrary/src/main/AndroidManifest.xml | 4 generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt | 125 +++++ generallibrary/src/main/res/layout/item_card_list.xml | 76 +- generallibrary/src/main/res/layout/activity_search_user_ge.xml | 42 generallibrary/src/main/res/layout/dialog_card_refund.xml | 205 ++++++++ 20 files changed, 1,018 insertions(+), 407 deletions(-) diff --git a/README.md b/README.md index 7bbc25a..5b607f1 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,115 @@ - 鑷畾涔夌粦瀹氶�傞厤鍣� - 琛ㄨ揪寮忔敮鎸� +### RecyclerView 鍒楄〃涓虹┖鏃剁殑瀹炵幇 +鍦� RecyclerView 閫傞厤鍣ㄤ腑锛屽綋鍒楄〃鏁版嵁涓虹┖鏃讹紝鏄剧ず涓�涓┖瑙嗗浘锛圗mptyView锛夌殑瀹炵幇鏂瑰紡锛� + +1. 缁ф壙 BaseRecycleAdapter锛� +```kotlin +class YourAdapter : BaseRecycleAdapter<RecyclerView.ViewHolder>() { + // 瀹炵幇蹇呰鐨勬柟娉� +} +``` + +2. 鍦ㄩ�傞厤鍣ㄤ腑瀹氫箟瑙嗗浘绫诲瀷甯搁噺锛堝凡鍦� BaseRecycleAdapter 涓畾涔夛級锛� +```kotlin +companion object { + const val VIEW_TYPE_ITEM = 1 + const val VIEW_TYPE_EMPTY = 0 +} +``` + +3. 閲嶅啓 getItemViewType 鏂规硶锛� +```kotlin +override fun getItemViewType(position: Int): Int { + if (dataList.isEmpty()) { + return VIEW_TYPE_EMPTY + } + return VIEW_TYPE_ITEM +} +``` + +4. 閲嶅啓 getItemCount 鏂规硶锛� +```kotlin +override fun getItemCount(): Int { + if (dataList.isEmpty()) { + return 1 // 杩斿洖1琛ㄧず鏄剧ず绌鸿鍥� + } + return dataList.size +} +``` + +5. 鍦� onCreateViewHolder 涓鐞嗕笉鍚岀被鍨嬬殑瑙嗗浘锛� +```kotlin +override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == VIEW_TYPE_EMPTY) { + val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate( + (parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater)!!, + R.layout.item_no_more, + parent, + false + ) + return ViewHolderEmpty(emptyView) + } else { + val binding = ItemListBinding.inflate( + parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater, + parent, + false + ) + return ItemViewHolder(binding.root) + } +} +``` + +6. 閲嶅啓 onBindViewHolder 鏂规硶锛� +```kotlin +override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is ViewHolderEmpty) { + // 绌鸿鍥句笉闇�瑕佺粦瀹氭暟鎹� + return + } + + // 缁戝畾鍒楄〃椤规暟鎹� + if (holder is ItemViewHolder) { + val item = dataList[position] + holder.bind(item) + } +} +``` + +7. 绌鸿鍥剧殑甯冨眬鏂囦欢绀轰緥锛坕tem_no_more.xml锛夛細 +```xml +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical" + android:padding="16dp"> + + <ImageView + android:layout_width="48dp" + android:layout_height="48dp" + android:src="@drawable/ic_empty" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:text="鏆傛棤鏁版嵁" + android:textColor="@color/text_gray" + android:textSize="14sp" /> + </LinearLayout> +</layout> +``` + +杩欑瀹炵幇鏂瑰紡鐨勪紭鐐癸細 +1. 缁熶竴鐨勭┖瑙嗗浘澶勭悊閫昏緫 +2. 鏀寔鑷畾涔夌┖瑙嗗浘鏍峰紡 +3. 涓嶅奖鍝嶅垪琛ㄦ甯告暟鎹殑鏄剧ず +4. 渚夸簬缁存姢鍜屾墿灞� + ## 鏁版嵁搴撶粨鏋� ### GeneralLibrary 鏁版嵁搴� diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml index 32912b8..3172cdf 100644 --- a/generallibrary/src/main/AndroidManifest.xml +++ b/generallibrary/src/main/AndroidManifest.xml @@ -49,7 +49,7 @@ <!-- </activity>--> <activity android:name="com.dayu.general.activity.NewCardActivity" /> <activity android:name="com.dayu.general.activity.ManageListActivity" /> - <activity android:name="com.dayu.general.activity.SearchUserActivity"/> + <activity android:name="com.dayu.general.activity.SearchUserListActivity"/> <activity android:name="com.dayu.general.activity.NfcWreatActivity" android:exported="false" android:launchMode="singleTop" @@ -71,7 +71,7 @@ <data android:mimeType="text/plain" /> </intent-filter> </activity> - <activity android:name=".activity.CardListActivity"/> + <activity android:name=".activity.SearchCardListActivity"/> diff --git a/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt b/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt index 15842a8..facf186 100644 --- a/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt +++ b/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt @@ -47,7 +47,7 @@ } fun init() { - projectDataDao = application?.let { BaseDaoSingleton.getInstance(it)?.projectDataDao() } + projectDataDao = application?.let { BaseDaoSingleton.getInstance(it).projectDataDao() } if (projectDataDao != null) { val projectDataBean = projectDataDao?.findFirst() if (projectDataBean != null) { diff --git a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt index 2a5ad7c..9cc98ad 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import com.dayu.general.databinding.FragmentCardBinding -import com.tencent.bugly.proguard.v /** * @author: zuo @@ -33,7 +32,7 @@ private fun initView() { binding?.homeNewCard?.setOnClickListener { - val intent = Intent(context, SearchUserActivity::class.java).apply { + val intent = Intent(context, SearchUserListActivity::class.java).apply { putExtra("type", "newUser") } startActivity(intent) @@ -43,7 +42,7 @@ startActivity(intent) } binding?.homeLossLL?.setOnClickListener { - val intent = Intent(context, CardListActivity::class.java).apply{ + val intent = Intent(context, SearchCardListActivity::class.java).apply{ putExtra("type", "loss") } startActivity(intent) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt index 6d9dc1c..4e425e0 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt @@ -62,9 +62,9 @@ private fun initView() { - binding!!.BSCardLL.setOnClickListener { v -> changeBottomState(Tab.BSC) } - binding!!.rechargeLL.setOnClickListener { v -> changeBottomState(Tab.RECHARGE) } - binding!!.myLL.setOnClickListener { v -> changeBottomState(Tab.MY) } + binding!!.BSCardLL.setOnClickListener { changeBottomState(Tab.BSC) } + binding!!.rechargeLL.setOnClickListener { changeBottomState(Tab.RECHARGE) } + binding!!.myLL.setOnClickListener { changeBottomState(Tab.MY) } } diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt similarity index 70% rename from generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt rename to generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt index 43874cd..58f452c 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt @@ -6,12 +6,14 @@ import com.dayu.baselibrary.utils.ToastUtil import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE +import com.dayu.general.BaseApplication import com.dayu.general.adapter.CardListAdapter import com.dayu.general.bean.net.SearchCardResult import com.dayu.general.databinding.ActivityCardListBinding -import com.dayu.general.view.CardSearchDialog import com.dayu.general.net.ApiManager import com.dayu.general.net.BaseResponse +import com.dayu.general.view.CardRefundDialog +import com.dayu.general.view.SearchDialog import com.scwang.smart.refresh.layout.api.RefreshLayout import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener @@ -20,21 +22,21 @@ * @date: 2023/3/31 * @description: 鍗$墖鍒楄〃鐣岄潰 */ -class CardListActivity : BaseActivity() { +class SearchCardListActivity : BaseActivity() { var binding: ActivityCardListBinding? = null private var cardAdapter: CardListAdapter? = null - var searchDialog: CardSearchDialog? = null - + var searchDialog: SearchDialog? = null + // 鍒嗛〉鐩稿叧鍙橀噺 private var currentPage = 1 private val pageSize = 20 private var hasMoreData = true - + // 淇濆瓨褰撳墠鎼滅储鏉′欢 + private var currentFarmerId = "" + private var currentFarmerName = "" private var currentCardNumber = "" - private var currentClientNumber = "" - private var currentClientName = "" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -46,23 +48,23 @@ } fun initView() { - searchDialog = CardSearchDialog(this) + searchDialog = SearchDialog(this) searchDialog?.show() binding?.titleBar?.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() } // 璁剧疆鎼滅储鐩戝惉鍣� - searchDialog?.setOnSearchListener(object : CardSearchDialog.OnSearchListener { - override fun onSearch(cardNumber: String, clientNumber: String, clientName: String) { + searchDialog?.setOnSearchListener(object : SearchDialog.OnSearchListener { + override fun onSearch(farmerId: String, farmerName: String, cardNumber: String) { // 淇濆瓨褰撳墠鎼滅储鏉′欢 currentCardNumber = cardNumber - currentClientNumber = clientNumber - currentClientName = clientName - + currentFarmerId = farmerId + currentFarmerName = farmerName + // 閲嶇疆鍒嗛〉鐘舵�� currentPage = 1 hasMoreData = true - + // 鎵ц鎼滅储 - searchCards(cardNumber, clientNumber, clientName, true) + searchCards(currentFarmerId, currentFarmerName, currentCardNumber, true) } }) binding?.titleBar?.setOnItemclickListner(ClickType_RIGHT_IMAGE) { @@ -72,23 +74,31 @@ } private fun setupRecyclerView() { - cardAdapter = CardListAdapter() + cardAdapter = CardListAdapter(this) binding?.recyclerView?.apply { - layoutManager = LinearLayoutManager(this@CardListActivity) + layoutManager = LinearLayoutManager(this@SearchCardListActivity) adapter = cardAdapter } - + // 璁剧疆鍒楄〃椤圭偣鍑讳簨浠� cardAdapter?.setOnItemClickListener { card -> - // 澶勭悊鍗$墖鐐瑰嚮浜嬩欢 - ToastUtil.show("宸查�夋嫨鍗$墖锛�${card.cardNum}") - // 杩欓噷鍙互娣诲姞璺宠浆鍒板崱鐗囪鎯呴〉闈㈢殑閫昏緫 - // val intent = Intent(this, CardDetailActivity::class.java) - // intent.putExtra("cardNum", card.cardNum) - // startActivity(intent) + // 鏄剧ず閫�娆惧璇濇 + val refundDialog = CardRefundDialog(this) + refundDialog.show() // 鍏堟樉绀哄璇濇 + refundDialog.setUserInfo( + card.clientName.toString(), + card.cardNum.toString(), + card.money.toString() + ) + refundDialog.setOnConfirmListener { refundAmount, remark -> + // TODO: 澶勭悊閫�娆鹃�昏緫 + lossPost(card.idCard.toString()) + } } + + } - + private fun setupRefreshLayout() { binding?.refreshLayout?.apply { // 璁剧疆鍒锋柊鍜屽姞杞芥洿澶氱洃鍚櫒 @@ -97,14 +107,14 @@ // 閲嶇疆椤电爜骞跺埛鏂版暟鎹� currentPage = 1 hasMoreData = true - searchCards(currentCardNumber, currentClientNumber, currentClientName, true) + searchCards(currentFarmerId, currentFarmerName, currentCardNumber, true) } - + override fun onLoadMore(refreshLayout: RefreshLayout) { // 濡傛灉杩樻湁鏇村鏁版嵁锛屽姞杞戒笅涓�椤� if (hasMoreData) { currentPage++ - searchCards(currentCardNumber, currentClientNumber, currentClientName, false) + searchCards(currentFarmerId, currentFarmerName, currentCardNumber, false) } else { // 瀹屾垚鍔犺浇骞舵彁绀烘病鏈夋洿澶氭暟鎹� refreshLayout.finishLoadMore(500, true, false) @@ -126,21 +136,26 @@ * @param clientName 瀹㈡埛濮撳悕 * @param isRefresh 鏄惁涓哄埛鏂版搷浣� */ - private fun searchCards(cardNumber: String, clientNumber: String, clientName: String, isRefresh: Boolean = true) { + private fun searchCards( + farmerId: String, + farmerName: String, + cardNumber: String, + isRefresh: Boolean = true + ) { val map = mutableMapOf<String, Any>() if (cardNumber.isNotEmpty()) { map["cardNum"] = cardNumber } - if (clientNumber.isNotEmpty()) { - map["clientNum"] = clientNumber + if (farmerId.isNotEmpty()) { + map["clientNum"] = farmerId } - if (clientName.isNotEmpty()) { - map["clientName"] = clientName + if (farmerName.isNotEmpty()) { + map["clientName"] = farmerName } - + // 娣诲姞鍒嗛〉鍙傛暟 map["pageCurr"] = currentPage map["pageSize"] = pageSize @@ -155,7 +170,7 @@ override fun onNext(t: BaseResponse<SearchCardResult>) { // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣� finishRefreshOrLoad(isRefresh) - + if (t.success) { // 澶勭悊鎼滅储鎴愬姛鐨勬儏鍐� val result = t.content @@ -168,7 +183,7 @@ } else { cardAdapter?.addData(result.obj) } - + // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁锛氭牴鎹綋鍓嶉〉鐮佸拰鎬婚〉鏁板垽鏂� hasMoreData = currentPage < result.pageTotal } else { @@ -201,7 +216,40 @@ } ) } - + + + private fun lossPost(cardNumber: String) { + val map = mutableMapOf<String, Any>() + + map["cardNum"] = cardNumber + map["operator"] = BaseApplication.userId + ApiManager.getInstance().requestGetLoading( + this, + "/sell/card/loss", + SearchCardResult::class.java, + map, + object : SubscriberListener<BaseResponse<SearchCardResult>>() { + override fun onNext(t: BaseResponse<SearchCardResult>) { + + + if (t.success) { + + } else { + // 澶勭悊鎼滅储澶辫触鐨勬儏鍐� + ToastUtil.show(t.msg) + } + } + + override fun onError(e: Throwable?) { + super.onError(e) + // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣� + ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}") + } + } + ) + } + + /** * 瀹屾垚鍒锋柊鎴栧姞杞芥搷浣� * @param isRefresh 鏄惁涓哄埛鏂版搷浣� @@ -213,4 +261,9 @@ binding?.refreshLayout?.finishLoadMore(true) } } + + override fun onDestroy() { + super.onDestroy() + searchDialog?.dismiss() + } } \ No newline at end of file diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt similarity index 96% rename from generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt rename to generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt index b284cea..5e11d51 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt @@ -6,7 +6,7 @@ import com.dayu.baselibrary.utils.ToastUtil import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE -import com.dayu.general.adapter.SearchListAdapter +import com.dayu.general.adapter.SearchUserListAdapter import com.dayu.general.bean.net.SearchUserResult import com.dayu.general.databinding.ActivitySearchUserGeBinding import com.dayu.general.view.SearchDialog @@ -20,10 +20,10 @@ * @date: 2023/6/26 16:09 * @description:鎼滅储鐢ㄦ埛 */ -class SearchUserActivity : BaseActivity() { +class SearchUserListActivity : BaseActivity() { var binding: ActivitySearchUserGeBinding? = null - private var userAdapter: SearchListAdapter? = null + private var userAdapter: SearchUserListAdapter? = null var searchDialog: SearchDialog? = null // 鍒嗛〉鐩稿叧鍙橀噺 @@ -74,9 +74,9 @@ } private fun setupRecyclerView() { - userAdapter = SearchListAdapter() + userAdapter = SearchUserListAdapter() binding?.recyclerView?.apply { - layoutManager = LinearLayoutManager(this@SearchUserActivity) + layoutManager = LinearLayoutManager(this@SearchUserListActivity) adapter = userAdapter } @@ -89,6 +89,8 @@ // intent.putExtra("userId", user.id) // startActivity(intent) } + + } private fun setupRefreshLayout() { diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt index 54ed289..1073b23 100644 --- a/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt +++ b/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt @@ -9,27 +9,18 @@ * Author: zuo * Date: 2025/3/10 */ -class BaseRecycleAdapter<T : RecyclerView.ViewHolder>:RecyclerView.Adapter<T>() { +abstract class BaseRecycleAdapter<T : RecyclerView.ViewHolder>:RecyclerView.Adapter<T>() { companion object { const val VIEW_TYPE_ITEM = 1 const val VIEW_TYPE_EMPTY = 0 } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T { - TODO("Not yet implemented") + abstract override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T - } + abstract override fun getItemCount(): Int - override fun getItemCount(): Int { - TODO("Not yet implemented") - - } - - override fun onBindViewHolder(holder: T, position: Int) { - TODO("Not yet implemented") - - } - +// abstract override fun onBindViewHolder(holder: T, position: Int) +// class ViewHolderEmpty(binding: ItemNoMoreBinding) : RecyclerView.ViewHolder(binding.root) { var mBinding: ItemNoMoreBinding = binding fun getBinding(): ItemNoMoreBinding { @@ -40,4 +31,4 @@ this.mBinding = binding } } - } +} diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt index 6b4e1ea..044ad98 100644 --- a/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt +++ b/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt @@ -1,9 +1,14 @@ package com.dayu.general.adapter +import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.TextView +import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.RecyclerView +import com.dayu.baselibrary.databinding.ItemNoMoreBinding +import com.dayu.general.R import com.dayu.general.bean.net.SearchCardResult import com.dayu.general.databinding.ItemCardListBinding @@ -12,40 +17,82 @@ * Author: zuo * Date: 2025/3/31 */ -class CardListAdapter : RecyclerView.Adapter<CardListAdapter.CardViewHolder>() { +class CardListAdapter(context: Context) : BaseRecycleAdapter<RecyclerView.ViewHolder>() { - private val cardList = mutableListOf<SearchCardResult.CardInfo>() + private var cardList: List<SearchCardResult.CardInfo> = emptyList() private var onItemClickListener: ((SearchCardResult.CardInfo) -> Unit)? = null + var mContext: Context = context - fun setData(cards: List<SearchCardResult.CardInfo>) { - cardList.clear() - cardList.addAll(cards) + fun setData(data: List<SearchCardResult.CardInfo>) { + cardList = data notifyDataSetChanged() } - - fun addData(cards: List<SearchCardResult.CardInfo>) { - val startPosition = cardList.size - cardList.addAll(cards) - notifyItemRangeInserted(startPosition, cards.size) + + fun addData(data: List<SearchCardResult.CardInfo>) { + val oldSize = cardList.size + cardList = cardList + data + notifyItemRangeInserted(oldSize, data.size) } - + fun setOnItemClickListener(listener: (SearchCardResult.CardInfo) -> Unit) { - this.onItemClickListener = listener + onItemClickListener = listener } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardViewHolder { - val binding = ItemCardListBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return CardViewHolder(binding) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == VIEW_TYPE_EMPTY) { + val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate( + (mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater)!!, + com.dayu.baselibrary.R.layout.item_no_more, + parent, + false + ) + return ViewHolderEmpty(emptyView) + } else { + val binding = ItemCardListBinding.inflate( + mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater, + parent, + false + ) + return CardViewHolder(binding) + } } - override fun onBindViewHolder(holder: CardViewHolder, position: Int) { - val card = cardList[position] - holder.bind(card) + override fun getItemViewType(position: Int): Int { + if (cardList.size == 0) { + return VIEW_TYPE_EMPTY + } else { + return VIEW_TYPE_ITEM + } } - override fun getItemCount(): Int = cardList.size + override fun getItemCount(): Int { + //鍚屾椂杩欓噷涔熼渶瑕佹坊鍔犲垽鏂紝濡傛灉mData.size()涓�0鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView + // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�1 + if (cardList.size == 0) { + return 1 + } + return cardList.size + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is ViewHolderEmpty) { + // 绌鸿鍥句笉闇�瑕佺粦瀹氭暟鎹� + return + } + + if (holder is CardViewHolder) { + val card = cardList[position] + holder.bind(card) + holder.itemView.setOnClickListener { + onItemClickListener?.invoke(card) + } + } + } + inner class CardViewHolder(private val binding: ItemCardListBinding) : RecyclerView.ViewHolder(binding.root) { + fun bind(card: SearchCardResult.CardInfo) { // 璁剧疆鏁版嵁鏄剧ず锛屾坊鍔犲垽绌哄鐞� binding.tvCardNumber.text = "鍗″彿锛�${card.cardNum ?: "鏃�"}" @@ -55,24 +102,13 @@ binding.tvClientNum.text = "瀹㈡埛缂栧彿锛�${card.clientNum ?: "鏃�"}" binding.tvCardBalance.text = "浣欓锛�${card.money ?: "0.00"} 鍏�" binding.tvPhone.text = "鐢佃瘽锛�${formatPhone(card.phone)}" - - // 鏄剧ず韬唤璇佸彿 - card.idCard?.let { idCard -> - if (idCard.isNotEmpty()) { - binding.tvIdCard.text = "韬唤璇侊細${formatIdCard(idCard)}" - binding.tvIdCard.visibility = View.VISIBLE - } else { - binding.tvIdCard.visibility = View.GONE - } - } ?: run { - binding.tvIdCard.visibility = View.GONE - } + binding.tvIdCard.text = "韬唤璇侊細${formatIdCard( card.idCard)}" + binding.root.setOnClickListener { onItemClickListener?.invoke(card) } } - // 鏍煎紡鍖栬韩浠借瘉鍙凤紝淇濇姢闅愮 private fun formatIdCard(idCard: String?): String { return if (!idCard.isNullOrEmpty() && idCard.length >= 18) { @@ -83,7 +119,7 @@ idCard ?: "鏃�" } } - + // 鏍煎紡鍖栨墜鏈哄彿锛屼繚鎶ら殣绉� private fun formatPhone(phone: String?): String { return if (!phone.isNullOrEmpty() && phone.length >= 11) { @@ -94,5 +130,4 @@ phone ?: "鏃�" } } - } -} \ No newline at end of file +} } \ No newline at end of file diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt deleted file mode 100644 index d63f6ac..0000000 --- a/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt +++ /dev/null @@ -1,108 +0,0 @@ -package com.dayu.general.adapter - -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import com.dayu.general.bean.net.SearchUserResult -import com.dayu.general.databinding.ItemUserListBinding - -/** - * Description: - * Author: zuo - * Date: 2025/3/10 - */ -class SearchListAdapter : RecyclerView.Adapter<SearchListAdapter.UserViewHolder>(){ - - private val userList = mutableListOf<SearchUserResult.UserInfo>() - private var onItemClickListener: ((SearchUserResult.UserInfo) -> Unit)? = null - - fun setData(users: List<SearchUserResult.UserInfo>) { - userList.clear() - userList.addAll(users) - notifyDataSetChanged() - } - - fun addData(users: List<SearchUserResult.UserInfo>) { - val startPosition = userList.size - userList.addAll(users) - notifyItemRangeInserted(startPosition, users.size) - } - - fun setOnItemClickListener(listener: (SearchUserResult.UserInfo) -> Unit) { - this.onItemClickListener = listener - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder { - val binding = ItemUserListBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return UserViewHolder(binding) - } - - override fun onBindViewHolder(holder: UserViewHolder, position: Int) { - val user = userList[position] - holder.bind(user) - } - - override fun getItemCount(): Int = userList.size - - inner class UserViewHolder(private val binding: ItemUserListBinding) : RecyclerView.ViewHolder(binding.root) { - fun bind(user: SearchUserResult.UserInfo) { - // 璁剧疆鏁版嵁鏄剧ず锛屾坊鍔犲垽绌哄鐞� - binding.tvCardCount.text = "鍗℃暟閲忥細${user.cardCount ?: "0"}" - binding.tvFarmerId.text = "瀹㈡埛缂栧彿锛�${user.clientNum ?: "鏃�"}" - binding.tvIdCard.text = "韬唤璇侊細${formatIdCard(user.idCard)}" - binding.tvName.text = "濮撳悕锛�${user.name ?: "鏈煡"}" - binding.tvPhone.text = "鐢佃瘽锛�${formatPhone(user.phone)}" - - // 娣诲姞鍦板潃淇℃伅鏄剧ず - user.address?.let { address -> - if (address.isNotEmpty()) { - binding.tvAddress.text = "鍦板潃锛�$address" - binding.tvAddress.visibility = View.VISIBLE - } else { - binding.tvAddress.visibility = View.GONE - } - } ?: run { - binding.tvAddress.visibility = View.GONE - } - - // 鏄剧ず鎿嶄綔鏃ユ湡 - user.operateDt?.let { date -> - if (date.isNotEmpty()) { - binding.tvOperateDate.text = "鎿嶄綔鏃ユ湡锛�$date" - binding.tvOperateDate.visibility = View.VISIBLE - } else { - binding.tvOperateDate.visibility = View.GONE - } - } ?: run { - binding.tvOperateDate.visibility = View.GONE - } - - binding.root.setOnClickListener { - onItemClickListener?.invoke(user) - } - } - - // 鏍煎紡鍖栬韩浠借瘉鍙凤紝淇濇姢闅愮 - private fun formatIdCard(idCard: String?): String { - return if (!idCard.isNullOrEmpty() && idCard.length >= 18) { - val start = idCard.substring(0, 6) - val end = idCard.substring(idCard.length - 4) - "$start****$end" - } else { - idCard ?: "鏃�" - } - } - - // 鏍煎紡鍖栨墜鏈哄彿锛屼繚鎶ら殣绉� - private fun formatPhone(phone: String?): String { - return if (!phone.isNullOrEmpty() && phone.length >= 11) { - val start = phone.substring(0, 3) - val end = phone.substring(phone.length - 4) - "$start****$end" - } else { - phone ?: "鏃�" - } - } - } -} \ No newline at end of file diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt new file mode 100644 index 0000000..5c311e0 --- /dev/null +++ b/generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt @@ -0,0 +1,125 @@ +package com.dayu.general.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.databinding.DataBindingUtil +import androidx.recyclerview.widget.RecyclerView +import com.dayu.baselibrary.databinding.ItemNoMoreBinding +import com.dayu.general.bean.net.SearchUserResult +import com.dayu.general.databinding.ItemUserListBinding + +/** + * Description: 鐢ㄦ埛鍒楄〃閫傞厤鍣� + * Author: zuo + * Date: 2025/3/10 + */ +class SearchUserListAdapter : BaseRecycleAdapter<RecyclerView.ViewHolder>() { + + private var userList: List<SearchUserResult.UserInfo> = emptyList() + private var onItemClickListener: ((SearchUserResult.UserInfo) -> Unit)? = null + + fun setData(data: List<SearchUserResult.UserInfo>) { + userList = data + notifyDataSetChanged() + } + + fun addData(data: List<SearchUserResult.UserInfo>) { + val oldSize = userList.size + userList = userList + data + notifyItemRangeInserted(oldSize, data.size) + } + + fun setOnItemClickListener(listener: (SearchUserResult.UserInfo) -> Unit) { + onItemClickListener = listener + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == VIEW_TYPE_EMPTY) { + val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate( + (parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater)!!, + com.dayu.baselibrary.R.layout.item_no_more, + parent, + false + ) + return ViewHolderEmpty(emptyView) + } else { + val binding = ItemUserListBinding.inflate( + parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater, + parent, + false + ) + return UserViewHolder(binding) + } + } + + override fun getItemViewType(position: Int): Int { + if (userList.size == 0) { + return VIEW_TYPE_EMPTY + }else{ + return VIEW_TYPE_ITEM + } + } + + override fun getItemCount(): Int { + //鍚屾椂杩欓噷涔熼渶瑕佹坊鍔犲垽鏂紝濡傛灉mData.size()涓�0鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView + // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�1 + if (userList.size == 0) { + return 1 + } + return userList.size + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is ViewHolderEmpty) { + // 绌鸿鍥句笉闇�瑕佺粦瀹氭暟鎹� + return + } + + if (holder is UserViewHolder) { + val card = userList[position] + holder.bind(card) + holder.itemView.setOnClickListener { + onItemClickListener?.invoke(card) + } + } + } + + + class UserViewHolder(private val binding: ItemUserListBinding) : RecyclerView.ViewHolder(binding.root) { + + fun bind(user: SearchUserResult.UserInfo) { + binding.tvName.text = user.name + binding.tvFarmerId.text = "鍐滄埛缂栧彿锛�${user.clientNum}" + binding.tvCardCount.text = "鍗$墖鏁伴噺锛�${user.cardCount}" + binding.tvIdCard.text = "韬唤璇佸彿锛�${formatIdCard(user.idCard)}" + binding. tvPhone.text = "鑱旂郴鐢佃瘽锛�${formatPhone(user.phone)}" + binding.tvAddressValue.text = user.address + binding.tvOperateDate.text = "鎿嶄綔鏃ユ湡锛�${user.operateDt}" + + + } + + // 鏍煎紡鍖栬韩浠借瘉鍙凤紝淇濇姢闅愮 + private fun formatIdCard(idCard: String?): String { + return if (!idCard.isNullOrEmpty() && idCard.length >= 18) { + val start = idCard.substring(0, 6) + val end = idCard.substring(idCard.length - 4) + "$start****$end" + } else { + idCard ?: "鏃�" + } + } + + // 鏍煎紡鍖栨墜鏈哄彿锛屼繚鎶ら殣绉� + private fun formatPhone(phone: String?): String { + return if (!phone.isNullOrEmpty() && phone.length >= 11) { + val start = phone.substring(0, 3) + val end = phone.substring(phone.length - 4) + "$start****$end" + } else { + phone ?: "鏃�" + } + } + } +} \ No newline at end of file diff --git a/generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt b/generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt new file mode 100644 index 0000000..8e52159 --- /dev/null +++ b/generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt @@ -0,0 +1,85 @@ +package com.dayu.general.view + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import android.view.WindowManager +import com.dayu.general.R +import com.dayu.general.databinding.DialogCardRefundBinding + +/** + * + */ +class CardRefundDialog(context: Context) : Dialog(context) { + private var binding: DialogCardRefundBinding? = null + private var onConfirmListener: (( String, String) -> Unit)? = null + private var username: String? = null + private var cardNumber: String? = null + private var balance: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = DialogCardRefundBinding.inflate(layoutInflater) + binding?.root?.let { setContentView(it) } + + // 璁剧疆瀵硅瘽妗嗗搴︿负灞忓箷瀹藉害鐨�80% + val window = window + val params = window?.attributes + params?.width = (context.resources.displayMetrics.widthPixels * 0.85).toInt() + params?.gravity = Gravity.CENTER + + // 璁剧疆鑳屾櫙閫忔槑 + window?.setBackgroundDrawableResource(android.R.color.transparent) + + // 璁剧疆鎸夐挳鐐瑰嚮浜嬩欢 + binding?.btnCancel?.setOnClickListener { + dismiss() + } + + binding?.btnConfirm?.setOnClickListener { + val refundAmount = binding?.etRefundAmount?.text.toString() + val remark = binding?.etRemark?.text.toString() + + if (refundAmount.isEmpty()) { + // TODO: 鏄剧ず閿欒鎻愮ず + return@setOnClickListener + } + + onConfirmListener?.invoke(refundAmount, remark) + dismiss() + } + + // 濡傛灉鏈夐璁剧殑鐢ㄦ埛淇℃伅锛岃缃畠浠� + username?.let { username -> + cardNumber?.let { cardNumber -> + balance?.let { balance -> + setUserInfo(username, cardNumber, balance) + } + } + } + } + + override fun show() { + super.show() + // 娓呯┖杈撳叆妗� + binding?.etRefundAmount?.setText("") + binding?.etRemark?.setText("") + } + + fun setUserInfo(username: String, cardNumber: String, balance: String) { + this.username = username + this.cardNumber = cardNumber + this.balance = balance + + binding?.apply { + tvUsernameValue.text = username + tvCardNumberValue.text = cardNumber + etBalance.setText(balance+"鍏�") + } + } + + fun setOnConfirmListener(listener: ( String, String) -> Unit) { + onConfirmListener = listener + } +} \ No newline at end of file diff --git a/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt b/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt index cf0d808..8069d09 100644 --- a/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt +++ b/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt @@ -52,6 +52,14 @@ } } + override fun show() { + super.show() + // 娓呯┖杈撳叆妗� + binding.etCardNumber.setText("") + binding.etClientNumber.setText("") + binding.etClientName.setText("") + } + /** * 璁剧疆鎼滅储鐩戝惉鍣� */ diff --git a/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt b/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt index 0f82113..fc6b280 100644 --- a/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt +++ b/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt @@ -52,6 +52,14 @@ } } + override fun show() { + super.show() + // 娓呯┖杈撳叆妗� + binding.etFarmerId.setText("") + binding.etFarmerName.setText("") + binding.etCardNumber.setText("") + } + /** * 璁剧疆鎼滅储鐩戝惉鍣� */ diff --git a/generallibrary/src/main/res/layout/activity_card_list.xml b/generallibrary/src/main/res/layout/activity_card_list.xml index 5a14bb8..cea652a 100644 --- a/generallibrary/src/main/res/layout/activity_card_list.xml +++ b/generallibrary/src/main/res/layout/activity_card_list.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - tools:context=".activity.CardListActivity"> + tools:context=".activity.SearchCardListActivity"> <com.dayu.baselibrary.view.TitleBar android:id="@+id/title_bar" @@ -16,30 +16,39 @@ app:leftImage="@mipmap/icon_back" app:rightImage="@mipmap/icon_search" /> - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:id="@+id/refresh_layout" + <FrameLayout android:layout_width="match_parent" - android:layout_height="match_parent" - app:srlAccentColor="@color/colorPrimary" - app:srlEnablePreviewInEditMode="true"> + android:layout_height="0dp" + android:layout_weight="1"> - <com.scwang.smart.refresh.header.ClassicsHeader - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/recycler_view" + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refresh_layout" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingTop="8dp" - android:paddingBottom="8dp" - android:clipToPadding="false" - android:overScrollMode="never" /> + app:srlAccentColor="@color/colorPrimary" + app:srlEnablePreviewInEditMode="true"> - <com.scwang.smart.refresh.footer.ClassicsFooter - android:layout_width="match_parent" - android:layout_height="wrap_content" /> + <com.scwang.smart.refresh.header.ClassicsHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" /> - </com.scwang.smart.refresh.layout.SmartRefreshLayout> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:clipToPadding="false" + android:overScrollMode="never" /> + + <com.scwang.smart.refresh.footer.ClassicsFooter + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + + + + </FrameLayout> </LinearLayout> \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/activity_search_user_ge.xml b/generallibrary/src/main/res/layout/activity_search_user_ge.xml index 85198ca..8eae170 100644 --- a/generallibrary/src/main/res/layout/activity_search_user_ge.xml +++ b/generallibrary/src/main/res/layout/activity_search_user_ge.xml @@ -16,31 +16,35 @@ app:leftImage="@mipmap/icon_back" app:rightImage="@mipmap/icon_search"/> - - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:id="@+id/refreshLayout" + <FrameLayout android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_below="@+id/titleBar"> + android:layout_height="0dp" + android:layout_weight="1"> - <com.scwang.smart.refresh.header.ClassicsHeader + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" android:layout_width="match_parent" - android:layout_height="wrap_content" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/recyclerView" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@color/base_list_bg" - android:overScrollMode="never" - android:padding="10dp" /> + android:layout_below="@+id/titleBar"> - <com.scwang.smart.refresh.footer.ClassicsFooter - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - </com.scwang.smart.refresh.layout.SmartRefreshLayout> + <com.scwang.smart.refresh.header.ClassicsHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/base_list_bg" + android:overScrollMode="never" + android:padding="10dp" /> + + <com.scwang.smart.refresh.footer.ClassicsFooter + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + </FrameLayout> </LinearLayout> \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/dialog_card_refund.xml b/generallibrary/src/main/res/layout/dialog_card_refund.xml new file mode 100644 index 0000000..5996b2c --- /dev/null +++ b/generallibrary/src/main/res/layout/dialog_card_refund.xml @@ -0,0 +1,205 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/search_dialog_bg" + android:padding="20dp"> + + <TextView + android:id="@+id/tv_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鎸傚け纭" + android:textColor="@color/black" + android:textSize="20sp" + android:textStyle="bold" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/divider" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginTop="12dp" + android:background="#E0E0E0" + app:layout_constraintTop_toBottomOf="@id/tv_title" /> + + <LinearLayout + android:id="@+id/layoutUsername" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:gravity="center_vertical" + android:orientation="horizontal" + app:layout_constraintTop_toBottomOf="@id/divider"> + + <TextView + android:id="@+id/tvUsername" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐢ㄦ埛鍚嶏細" + android:textColor="#666666" + android:textSize="14sp" /> + + <TextView + android:id="@+id/tvUsernameValue" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="5dp" + android:layout_weight="1" + android:padding="5dp" + android:textColor="@color/black" + android:textSize="15sp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/layoutCardNumber" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal" + app:layout_constraintTop_toBottomOf="@id/layoutUsername"> + + <TextView + android:id="@+id/tvCardNumber" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍗� 鍙凤細" + android:textColor="#666666" + android:textSize="14sp" /> + + <TextView + android:id="@+id/tvCardNumberValue" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="5dp" + android:layout_weight="1" + android:padding="5dp" + android:textColor="@color/black" + android:textSize="15sp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/layoutBalance" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal" + app:layout_constraintTop_toBottomOf="@id/layoutCardNumber"> + + <TextView + android:id="@+id/tvBalance" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浣� 棰濓細" + android:textColor="#666666" + android:textSize="14sp" /> + + <TextView + android:id="@+id/etBalance" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="5dp" + android:singleLine="true" + android:layout_marginStart="5dp" + android:textColor="@color/black" + android:textSize="15sp" + app:layout_constraintTop_toBottomOf="@id/tvBalance" /> + </LinearLayout> + + <TextView + android:id="@+id/tvRefundAmount" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="14dp" + android:text="閫�杩橀噾棰�" + android:textColor="#666666" + android:textSize="14sp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@id/layoutBalance" /> + + <EditText + android:id="@+id/etRefundAmount" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:background="@drawable/edit_text_bg" + android:hint="璇疯緭鍏ラ��杩橀噾棰�(閫夊~)" + android:inputType="numberDecimal" + android:padding="12dp" + android:singleLine="true" + android:textColorHint="#BBBBBB" + android:textSize="15sp" + app:layout_constraintTop_toBottomOf="@id/tvRefundAmount" /> + + <TextView + android:id="@+id/tvRemark" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="14dp" + android:text="澶囨敞" + android:textColor="#666666" + android:textSize="14sp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@id/etRefundAmount" /> + + <EditText + android:id="@+id/etRemark" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:background="@drawable/edit_text_bg" + android:hint="璇疯緭鍏ュ娉�(閫夊~)" + android:inputType="textMultiLine" + android:minLines="2" + android:padding="12dp" + android:textColorHint="#BBBBBB" + android:textSize="15sp" + app:layout_constraintTop_toBottomOf="@id/tvRemark" /> + + <Button + android:id="@+id/btnCancel" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:layout_marginEnd="6dp" + android:background="@drawable/cancel_button_ripple" + android:clickable="true" + android:focusable="true" + android:paddingTop="10dp" + android:paddingBottom="10dp" + android:stateListAnimator="@null" + android:text="鍙栨秷" + android:textColor="#666666" + android:textSize="15sp" + app:layout_constraintEnd_toStartOf="@id/btnConfirm" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_weight="1" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/etRemark" /> + + <Button + android:id="@+id/btnConfirm" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:background="@drawable/search_button_ripple" + android:clickable="true" + android:elevation="2dp" + android:focusable="true" + android:paddingTop="12dp" + android:paddingBottom="12dp" + android:stateListAnimator="@null" + android:text="纭畾" + android:textColor="@android:color/white" + android:textSize="16sp" + android:textStyle="bold" + app:layout_constraintBaseline_toBaselineOf="@id/btnCancel" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_weight="1" + app:layout_constraintStart_toEndOf="@id/btnCancel" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/fragment_card.xml b/generallibrary/src/main/res/layout/fragment_card.xml index 338af60..fbc41d1 100644 --- a/generallibrary/src/main/res/layout/fragment_card.xml +++ b/generallibrary/src/main/res/layout/fragment_card.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white"> @@ -12,7 +13,8 @@ android:layout_height="@dimen/dimen_title_height" android:background="@color/title_bar_bg" android:elevation="4dp" - app:centerText="鍒跺崱" /> + app:centerText="鍒跺崱" + tools:ignore="MissingConstraints" /> <ScrollView android:layout_width="match_parent" @@ -24,20 +26,20 @@ <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="16dp"> + android:padding="12dp"> <androidx.cardview.widget.CardView android:id="@+id/home_newCard" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="16dp" - android:layout_marginEnd="8dp" + android:layout_marginStart="6dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="6dp" android:clickable="true" android:focusable="true" android:foreground="?android:attr/selectableItemBackground" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" app:layout_constraintEnd_toStartOf="@+id/home_redCard" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -47,21 +49,21 @@ android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" - android:padding="16dp"> + android:padding="12dp"> <ImageView - android:layout_width="70dp" - android:layout_height="70dp" + android:layout_width="55dp" + android:layout_height="55dp" android:src="@drawable/home_add" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="6dp" android:gravity="center" android:text="寮�鍗�" android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" /> + android:textSize="14sp" /> </LinearLayout> </androidx.cardview.widget.CardView> @@ -69,15 +71,15 @@ android:id="@+id/home_recharge" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="16dp" - android:layout_marginEnd="8dp" + android:layout_marginStart="6dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="6dp" android:clickable="true" android:focusable="true" android:foreground="?android:attr/selectableItemBackground" android:visibility="gone" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -87,21 +89,21 @@ android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" - android:padding="16dp"> + android:padding="12dp"> <ImageView - android:layout_width="70dp" - android:layout_height="70dp" + android:layout_width="55dp" + android:layout_height="55dp" android:src="@drawable/home_recharge" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="6dp" android:gravity="center" android:text="鍏呭��" android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" /> + android:textSize="14sp" /> </LinearLayout> </androidx.cardview.widget.CardView> @@ -109,14 +111,14 @@ android:id="@+id/home_redCard" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="16dp" - android:layout_marginEnd="8dp" + android:layout_marginStart="6dp" + android:layout_marginTop="12dp" + android:layout_marginEnd="6dp" android:clickable="true" android:focusable="true" android:foreground="?android:attr/selectableItemBackground" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/home_newCard" app:layout_constraintTop_toTopOf="parent"> @@ -126,21 +128,21 @@ android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" - android:padding="16dp"> + android:padding="12dp"> <ImageView - android:layout_width="70dp" - android:layout_height="70dp" + android:layout_width="55dp" + android:layout_height="55dp" android:src="@drawable/home_read" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="6dp" android:gravity="center" android:text="璇诲崱" android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" /> + android:textSize="14sp" /> </LinearLayout> </androidx.cardview.widget.CardView> @@ -148,14 +150,14 @@ android:id="@+id/home_loss" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="24dp" - android:layout_marginEnd="8dp" + android:layout_marginStart="6dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="6dp" android:clickable="true" android:focusable="true" android:foreground="?android:attr/selectableItemBackground" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" app:layout_constraintEnd_toStartOf="@+id/home_replacement" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/home_newCard"> @@ -166,21 +168,21 @@ android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" - android:padding="16dp"> + android:padding="12dp"> <ImageView - android:layout_width="70dp" - android:layout_height="70dp" + android:layout_width="55dp" + android:layout_height="55dp" android:src="@drawable/home_report" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="6dp" android:gravity="center" android:text="鎸傚け" android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" /> + android:textSize="14sp" /> </LinearLayout> </androidx.cardview.widget.CardView> @@ -191,7 +193,7 @@ android:gravity="center" android:text="瑙i櫎鎸傚け" android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" + android:textSize="14sp" android:visibility="gone" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -200,14 +202,14 @@ android:id="@+id/home_replacement" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="24dp" - android:layout_marginEnd="8dp" + android:layout_marginStart="6dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="6dp" android:clickable="true" android:focusable="true" android:foreground="?android:attr/selectableItemBackground" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/home_loss" app:layout_constraintTop_toBottomOf="@+id/home_redCard"> @@ -217,21 +219,138 @@ android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" - android:padding="16dp"> + android:padding="12dp"> <ImageView - android:layout_width="70dp" - android:layout_height="70dp" + android:layout_width="55dp" + android:layout_height="55dp" android:src="@drawable/home_replacement" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="6dp" android:gravity="center" android:text="琛ュ崱" android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" /> + android:textSize="14sp" /> + </LinearLayout> + </androidx.cardview.widget.CardView> + + <androidx.cardview.widget.CardView + android:id="@+id/home_reverse" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="6dp" + android:clickable="true" + android:focusable="true" + android:foreground="?android:attr/selectableItemBackground" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" + app:layout_constraintEnd_toStartOf="@+id/home_deduction" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_replacement"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical" + android:padding="12dp"> + + <ImageView + android:layout_width="55dp" + android:layout_height="55dp" + android:src="@drawable/home_system" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:gravity="center" + android:text="鍐叉" + android:textColor="@color/text_selecter_color" + android:textSize="14sp" /> + </LinearLayout> + </androidx.cardview.widget.CardView> + + <androidx.cardview.widget.CardView + android:id="@+id/home_deduction" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="6dp" + android:clickable="true" + android:focusable="true" + android:foreground="?android:attr/selectableItemBackground" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/home_reverse" + app:layout_constraintTop_toBottomOf="@+id/home_replacement"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical" + android:padding="12dp"> + + <ImageView + android:layout_width="55dp" + android:layout_height="55dp" + android:src="@drawable/home_system" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:gravity="center" + android:text="琛ユ墸" + android:textColor="@color/text_selecter_color" + android:textSize="14sp" /> + </LinearLayout> + </androidx.cardview.widget.CardView> + + <androidx.cardview.widget.CardView + android:id="@+id/home_rewrite" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="6dp" + android:clickable="true" + android:focusable="true" + android:foreground="?android:attr/selectableItemBackground" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" + app:layout_constraintEnd_toStartOf="@+id/home_manage" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/home_reverse"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical" + android:padding="12dp"> + + <ImageView + android:layout_width="55dp" + android:layout_height="55dp" + android:src="@drawable/home_system" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:gravity="center" + android:text="鍙嶅啓" + android:textColor="@color/text_selecter_color" + android:textSize="14sp" /> </LinearLayout> </androidx.cardview.widget.CardView> @@ -239,19 +358,19 @@ android:id="@+id/home_manage" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="24dp" - android:layout_marginEnd="8dp" - android:layout_marginBottom="16dp" + android:layout_marginStart="6dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="6dp" + android:layout_marginBottom="12dp" android:clickable="true" android:focusable="true" android:foreground="?android:attr/selectableItemBackground" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" + app:cardCornerRadius="10dp" + app:cardElevation="3dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/home_loss" + app:layout_constraintStart_toEndOf="@+id/home_rewrite" + app:layout_constraintTop_toBottomOf="@+id/home_deduction" app:layout_constraintVertical_bias="0.0"> <LinearLayout @@ -259,75 +378,24 @@ android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" - android:padding="16dp"> + android:padding="12dp"> <ImageView - android:layout_width="70dp" - android:layout_height="70dp" + android:layout_width="55dp" + android:layout_height="55dp" android:src="@drawable/home_system" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="6dp" android:gravity="center" android:text="鍒朵綔绠$悊鍗�" android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" /> + android:textSize="14sp" /> </LinearLayout> </androidx.cardview.widget.CardView> - <TextView - android:id="@+id/home_parameter" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center" - android:text="鍙傛暟璁剧疆" - android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" - android:visibility="gone" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <androidx.cardview.widget.CardView - android:id="@+id/home_my" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="24dp" - android:layout_marginEnd="8dp" - android:clickable="true" - android:focusable="true" - android:foreground="?android:attr/selectableItemBackground" - android:visibility="gone" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/home_admin"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:orientation="vertical" - android:padding="16dp"> - - <ImageView - android:layout_width="70dp" - android:layout_height="70dp" - android:src="@drawable/home_my" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:gravity="center" - android:text="涓汉涓績" - android:textColor="@color/text_selecter_color" - android:textSize="@dimen/home_text_size" /> - </LinearLayout> - </androidx.cardview.widget.CardView> </androidx.constraintlayout.widget.ConstraintLayout> </ScrollView> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/item_card_list.xml b/generallibrary/src/main/res/layout/item_card_list.xml index c470e47..8598844 100644 --- a/generallibrary/src/main/res/layout/item_card_list.xml +++ b/generallibrary/src/main/res/layout/item_card_list.xml @@ -24,7 +24,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:text="鍗″彿锛�5323281010060000" + android:text="鍗″彿锛�" android:textColor="@color/black" android:textSize="16sp" android:textStyle="bold" /> @@ -33,51 +33,36 @@ android:id="@+id/tv_card_status" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="鐘舵�侊細姝e父" + android:text="鐘舵�侊細" android:textColor="@color/green" android:textSize="14sp" /> - </LinearLayout> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:orientation="horizontal"> - - <TextView - android:id="@+id/tv_card_type" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="鍗$被鍨嬶細鍐滄埛鍗�" - android:textColor="@color/black" - android:textSize="14sp" /> - - <TextView - android:id="@+id/tv_card_balance" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="浣欓锛�90.97 鍏�" - android:textColor="@color/black" - android:textSize="14sp" - android:textStyle="bold" /> </LinearLayout> <TextView android:id="@+id/tv_client_name" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:text="濮撳悕锛氭潕鍥�" + android:layout_marginTop="4dp" + android:text="濮撳悕锛�" android:textColor="@color/black" android:textSize="14sp" /> + + <TextView + android:id="@+id/tv_card_type" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + android:text="鍗$被鍨嬶細" + android:textColor="@color/black" + android:textSize="14sp" /> + <TextView android:id="@+id/tv_client_num" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" - android:text="瀹㈡埛缂栧彿锛�281010060002" + android:text="瀹㈡埛缂栧彿锛�" android:textColor="@color/black" android:textSize="14sp" /> @@ -86,19 +71,36 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" - android:text="鐢佃瘽锛�156****4561" + android:text="鐢佃瘽锛�" android:textColor="@color/black" android:textSize="14sp" /> - <TextView - android:id="@+id/tv_id_card" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" - android:text="韬唤璇侊細3402****1245" - android:textColor="@color/black" - android:textSize="14sp" - android:visibility="visible" /> + android:orientation="horizontal"> + + <TextView + android:id="@+id/tv_id_card" + android:layout_width="0dp" + android:layout_height="wrap_content" + + android:layout_weight="1" + android:text="韬唤璇侊細" + android:textColor="@color/black" + android:textSize="14sp" + android:visibility="visible" /> + + <TextView + android:id="@+id/tv_card_balance" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浣欓锛氬厓" + android:textColor="@color/black" + android:textSize="14sp" + android:textStyle="bold" /> + </LinearLayout> </LinearLayout> </androidx.cardview.widget.CardView> \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/item_user_list.xml b/generallibrary/src/main/res/layout/item_user_list.xml index f2e4eab..1fa1abb 100644 --- a/generallibrary/src/main/res/layout/item_user_list.xml +++ b/generallibrary/src/main/res/layout/item_user_list.xml @@ -62,14 +62,30 @@ android:textColor="#666666" android:layout_marginBottom="4dp"/> - <TextView - android:id="@+id/tvAddress" + <LinearLayout + android:id="@+id/llAddress" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textSize="14sp" - android:textColor="#666666" + android:orientation="horizontal" android:layout_marginBottom="4dp" - android:visibility="gone"/> + android:visibility="gone"> + + <TextView + android:id="@+id/tvAddressLabel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍦板潃锛�" + android:textSize="14sp" + android:textColor="#666666"/> + + <TextView + android:id="@+id/tvAddressValue" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:textSize="14sp" + android:textColor="#666666"/> + </LinearLayout> <TextView android:id="@+id/tvOperateDate" -- Gitblit v1.8.0