问题描述
我尝试在epoxyrecyclerview 中制作剥离的行。 我嵌套了epoxyrecycler 视图,这是父级的epoxymodel
EpoxyModelWithHolder<AccountClassificationEpoxyModel.Holder>(),PopupMenu.OnMenuItemClickListener {
@EpoxyAttribute
lateinit var data: ClassificationDto
@EpoxyAttribute
var dataAccount: HashMap<Int,ArrayList<AccountDto>>? = null
@EpoxyAttribute
lateinit var parentFragment: AccountFragment
private lateinit var dialogState: DialogState
var isEven = false
@RequiresApi(Build.VERSION_CODES.M)
override fun bind(holder: Holder) {
super.bind(holder)
if (!this::dialogState.isInitialized) {
dialogState = ViewModelProviders.of(parentFragment).get(DialogState::class.java)
}
fillValues(holder)
holder.btnEdit.setOnClickListener {
val popUp = PopupMenu(parentFragment.requireContext(),it)
popUp.setOnMenuItemClickListener(this)
popUp.inflate(R.menu.menu_popup)
popUp.show()
}
}
inner class Holder : KotlinEpoxyHolder() {
val tvName by bind<TextView>(R.id.tvClassificationName)
val tvCode by bind<TextView>(R.id.tvClassificationCode)
val rvAccount by bind<EpoxyRecyclerView>(R.id.rvAccount)
val btnEdit by bind<AppCompatImageButton>(R.id.btnEdit)
}
override fun onMenuItemClick(item: MenuItem?): Boolean {
when (item?.itemId) {
R.id.actionUpdate -> {
val dialog = AddClassificationFragment(data).newInstance()
dialog.setTargetFragment(parentFragment,1)
parentFragment.fragmentManager?.let { it1 -> dialog.show(it1,"Dialog") }
}
R.id.actionDelete -> {
dialogState.deleteClassification(data)
}
}
return true
}
private fun fillValues(holder: Holder) {
holder.tvName.text = data.classificationName
holder.tvCode.text = data.classificationCode
holder.rvAccount.layoutManager = GridLayoutManager(holder.rvAccount.context,1)
holder.rvAccount.clear()
holder.rvAccount.withModels {
data.id?.let {
val filteredData = dataAccount?.get(it)
filteredData?.forEach {
accountAccount {
id(hashCode())
data(it)
even(isEven)
parentFragment(parentFragment)
}
isEven = !isEven
}
}
}
}
}
这是我的孩子环氧树脂模型
EpoxyModelWithHolder<AccountAccountEpoxyModel.Holder>(),PopupMenu.OnMenuItemClickListener {
@EpoxyAttribute
lateinit var data: AccountDto
@EpoxyAttribute
var even: Boolean = false
@EpoxyAttribute
lateinit var parentFragment: AccountFragment
private lateinit var dialogState: DialogState
@RequiresApi(Build.VERSION_CODES.M)
override fun bind(holder: Holder) {
super.bind(holder)
if (!this::dialogState.isInitialized) {
dialogState = ViewModelProviders.of(parentFragment).get(DialogState::class.java)
}
if (even) holder.background.toGone()
holder.tvAccountName.text = data.accountName
holder.tvAccountCode.text = data.accountCode
holder.tvPosition.text = data.position?.capitalize(Locale.getDefault())
holder.btnEdit.setOnClickListener {
val popUp = PopupMenu(parentFragment.requireContext(),it)
popUp.setOnMenuItemClickListener(this)
popUp.inflate(R.menu.menu_popup)
popUp.show()
}
}
inner class Holder : KotlinEpoxyHolder() {
val tvAccountName by bind<TextView>(R.id.tvAccountName)
val tvAccountCode by bind<TextView>(R.id.tvAccountCode)
val tvPosition by bind<TextView>(R.id.tvPosition)
val background by bind<View>(R.id.background)
val btnEdit by bind<AppCompatImageButton>(R.id.btnEdit)
}
override fun onMenuItemClick(item: MenuItem?): Boolean {
when (item?.itemId) {
R.id.actionUpdate -> {
val dialog = AddAccountDialog(data).newInstance()
dialog.setTargetFragment(parentFragment,"Dialog") }
}
R.id.actionDelete -> {
dialogState.deleteAccount(data)
}
}
return true
}
}
所以我使用变量 isEven 来制作条形行。当行位置甚至高亮背景消失时。问题是当我更新数据时,条带变得凌乱。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)