Commit 5176e97e authored by yinjiacheng's avatar yinjiacheng

fix SHQBD-228 商户管理中心下拉刷新优化

parent 92ca0ce7
...@@ -15,85 +15,84 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean ...@@ -15,85 +15,84 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.GetConfigListBean
* description: 商户服务adapter * description: 商户服务adapter
*/ */
class MerchantServiceFunctionAdapter @JvmOverloads constructor( class MerchantServiceFunctionAdapter @JvmOverloads constructor(
val context: Context, val context: Context,
data: List<GetConfigListBean.Function>? = null, data: List<GetConfigListBean.Function>? = null,
val listener: OnItemClickListener? = null val listener: OnItemClickListener? = null
) : ) :
RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() { RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() {
companion object { companion object {
// 是否显示标识 // 是否显示标识
private const val FUNCTION_SHOW = 1 private const val FUNCTION_SHOW = 1
} }
/** /**
* 数据源 * 数据源
*/ */
private val serviceData by lazy { ArrayList<GetConfigListBean.Function>() } private val serviceData by lazy { ArrayList<GetConfigListBean.Function>() }
private lateinit var viewBinding: ItemMerchantServiceFunctionBinding private lateinit var viewBinding: ItemMerchantServiceFunctionBinding
init { init {
// 将不显示的数据去除 // 将不显示的数据去除
data?.let { data?.let {
(it as ArrayList<GetConfigListBean.Function>).iterator().apply { (it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) { while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove() if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
} }
}
serviceData.addAll(it)
} }
}
/** /**
* 更新数据 将不显示的数据去除 * 更新数据 将不显示的数据去除
*/ */
fun updateData(data: List<GetConfigListBean.Function>?) { fun updateData(data: List<GetConfigListBean.Function>?) {
data?.let { data?.let {
serviceData.clear() serviceData.clear()
(it as ArrayList<GetConfigListBean.Function>).iterator().apply { (it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) { while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove() if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
notifyDataSetChanged()
} }
}
serviceData.addAll(it)
notifyDataSetChanged()
} }
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder {
viewBinding = ItemMerchantServiceFunctionBinding.inflate( viewBinding = ItemMerchantServiceFunctionBinding.inflate(
LayoutInflater.from( LayoutInflater.from(
parent.context parent.context
), parent, false ), parent, false
) )
return MerchantServiceViewHolder(viewBinding.root, viewBinding) return MerchantServiceViewHolder(viewBinding.root, viewBinding)
} }
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) { override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position] val data = serviceData[position]
if (data.show != FUNCTION_SHOW) return if (data.icon_url.isNotEmpty()) {
if (data.icon_url.isNotEmpty()) { Glide.with(context).load(data.icon_url).into(viewBinding.ivService)
Glide.with(context).load(data.icon_url).into(viewBinding.ivService) } else {
} else { // TODO: 6/11/21 显示本地icon
// TODO: 6/11/21 显示本地icon
}
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
} }
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
}
override fun getItemCount(): Int { override fun getItemCount(): Int {
return serviceData.size return serviceData.size
} }
class MerchantServiceViewHolder( class MerchantServiceViewHolder(
itemView: View, itemView: View,
val viewBinding: ItemMerchantServiceFunctionBinding val viewBinding: ItemMerchantServiceFunctionBinding
) : ) :
RecyclerView.ViewHolder(itemView) RecyclerView.ViewHolder(itemView)
interface OnItemClickListener { interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function) fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function)
} }
} }
\ No newline at end of file
...@@ -40,14 +40,29 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor( ...@@ -40,14 +40,29 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
init { init {
// 将不显示的数据去除 // 将不显示的数据去除
data?.let { data?.let {
it.forEach { menuItem -> it.forEach { item ->
if (menuItem.show == GROUP_SHOW) { if (item.show == GROUP_SHOW) {
groupData.add(menuItem) groupData.add(item)
} }
} }
} }
} }
/**
* 刷新数据
*/
fun updateData(data: List<GetConfigListBean.Item>?) {
groupData.clear()
data?.let {
it.forEach { item ->
if (item.show == GROUP_SHOW) {
groupData.add(item)
}
}
}
notifyDataSetChanged()
}
override fun onCreateViewHolder( override fun onCreateViewHolder(
parent: ViewGroup, parent: ViewGroup,
viewType: Int viewType: Int
...@@ -58,15 +73,16 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor( ...@@ -58,15 +73,16 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
parent, parent,
false false
) )
return MerchantServiceGroupViewHolder(viewBinding.root, viewBinding) val holder = MerchantServiceGroupViewHolder(viewBinding.root, viewBinding)
// ViewHolder禁止复用
holder.setIsRecyclable(false)
return holder
} }
override fun onBindViewHolder(holder: MerchantServiceGroupViewHolder, position: Int) { override fun onBindViewHolder(holder: MerchantServiceGroupViewHolder, position: Int) {
val data = groupData[position] val data = groupData[position]
if (data.show != GROUP_SHOW) return
holder.viewBinding.tvTitle.text = data.group_name holder.viewBinding.tvTitle.text = data.group_name
viewBinding.rvService.layoutManager = viewBinding.rvService.layoutManager = GridLayoutManager(context, 4)
GridLayoutManager(context, 4)
viewBinding.rvService.adapter = MerchantServiceFunctionAdapter(context, data.functions, listener) viewBinding.rvService.adapter = MerchantServiceFunctionAdapter(context, data.functions, listener)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment