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
* description: 商户服务adapter
*/
class MerchantServiceFunctionAdapter @JvmOverloads constructor(
val context: Context,
data: List<GetConfigListBean.Function>? = null,
val listener: OnItemClickListener? = null
val context: Context,
data: List<GetConfigListBean.Function>? = null,
val listener: OnItemClickListener? = null
) :
RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() {
RecyclerView.Adapter<MerchantServiceFunctionAdapter.MerchantServiceViewHolder>() {
companion object {
// 是否显示标识
private const val FUNCTION_SHOW = 1
}
companion object {
// 是否显示标识
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 {
// 将不显示的数据去除
data?.let {
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
init {
// 将不显示的数据去除
data?.let {
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
}
}
/**
* 更新数据 将不显示的数据去除
*/
fun updateData(data: List<GetConfigListBean.Function>?) {
data?.let {
serviceData.clear()
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
notifyDataSetChanged()
/**
* 更新数据 将不显示的数据去除
*/
fun updateData(data: List<GetConfigListBean.Function>?) {
data?.let {
serviceData.clear()
(it as ArrayList<GetConfigListBean.Function>).iterator().apply {
while (hasNext()) {
if (next().show != FUNCTION_SHOW) remove()
}
}
serviceData.addAll(it)
notifyDataSetChanged()
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder {
viewBinding = ItemMerchantServiceFunctionBinding.inflate(
LayoutInflater.from(
parent.context
), parent, false
)
return MerchantServiceViewHolder(viewBinding.root, viewBinding)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MerchantServiceViewHolder {
viewBinding = ItemMerchantServiceFunctionBinding.inflate(
LayoutInflater.from(
parent.context
), parent, false
)
return MerchantServiceViewHolder(viewBinding.root, viewBinding)
}
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position]
if (data.show != FUNCTION_SHOW) return
if (data.icon_url.isNotEmpty()) {
Glide.with(context).load(data.icon_url).into(viewBinding.ivService)
} else {
// TODO: 6/11/21 显示本地icon
}
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
override fun onBindViewHolder(holder: MerchantServiceViewHolder, position: Int) {
val data = serviceData[position]
if (data.icon_url.isNotEmpty()) {
Glide.with(context).load(data.icon_url).into(viewBinding.ivService)
} else {
// TODO: 6/11/21 显示本地icon
}
holder.viewBinding.tvService.text = data.function_name
holder.viewBinding.root.setOnClickListener { listener?.onItemClick(it, position, data) }
}
override fun getItemCount(): Int {
return serviceData.size
}
override fun getItemCount(): Int {
return serviceData.size
}
class MerchantServiceViewHolder(
itemView: View,
val viewBinding: ItemMerchantServiceFunctionBinding
) :
RecyclerView.ViewHolder(itemView)
class MerchantServiceViewHolder(
itemView: View,
val viewBinding: ItemMerchantServiceFunctionBinding
) :
RecyclerView.ViewHolder(itemView)
interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function)
}
interface OnItemClickListener {
fun onItemClick(view: View, position: Int, data: GetConfigListBean.Function)
}
}
\ No newline at end of file
}
......@@ -40,14 +40,29 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
init {
// 将不显示的数据去除
data?.let {
it.forEach { menuItem ->
if (menuItem.show == GROUP_SHOW) {
groupData.add(menuItem)
it.forEach { item ->
if (item.show == GROUP_SHOW) {
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(
parent: ViewGroup,
viewType: Int
......@@ -58,15 +73,16 @@ class MerchantServiceGroupAdapter @JvmOverloads constructor(
parent,
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) {
val data = groupData[position]
if (data.show != GROUP_SHOW) return
holder.viewBinding.tvTitle.text = data.group_name
viewBinding.rvService.layoutManager =
GridLayoutManager(context, 4)
viewBinding.rvService.layoutManager = GridLayoutManager(context, 4)
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