但问题是我想知道如何从类中的片段调用方法?这是我的代码
class BindCartItemList(val cartItem: CartList) : Item<GroupieViewHolder>() {
override fun getLayout() = R.layout.ryr_cartlist_with_select
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
viewHolder.itemView.ryr_product_name.text = cartItem.product?.productName
viewHolder.itemView.ryr_quantity.setText(cartItem.quantity.toString())
viewHolder.itemView.ryr_product_barcode.text = cartItem.product?.productBarcode
//compact conversion
val mConvert = FormatConversion()
//default for display price and amount
viewHolder.itemView.ryr_unit_price.text = mConvert.compactAmount(cartItem.product?.price!!)
cartItem.amount = cartItem.quantity * cartItem.product?.price!!
viewHolder.itemView.ryr_amount.text = mConvert.compactAmount(cartItem.amount)
//quantity decrease
viewHolder.itemView.ryr_btn_decrease.setOnClickListener {
cartItem.quantity -= 1
//not allow user set qty < 1
if (cartItem.quantity < 1) {
cartItem.quantity = 1
} else {
//once button press qty and amount will be change
viewHolder.itemView.ryr_quantity.setText(cartItem.quantity.toString())
cartItem.amount = cartItem.quantity * cartItem.product?.price!!
viewHolder.itemView.ryr_amount.text = mConvert.compactAmount(cartItem.amount)
}
(it.context as PosActivity).updateTotalAmount()
}
//quantity increase
viewHolder.itemView.ryr_btn_increase.setOnClickListener {
cartItem.quantity += 1
viewHolder.itemView.ryr_quantity.setText(cartItem.quantity.toString())
cartItem.amount = cartItem.quantity * cartItem.product?.price!!
viewHolder.itemView.ryr_amount.text = mConvert.compactAmount(cartItem.amount)
(it.context as PosActivity).updateTotalAmount()
}
//press container_1 for checkbox
viewHolder.itemView.ryr_container_1.setOnClickListener {
if (viewHolder.itemView.ryr_selected.isChecked) {
viewHolder.itemView.ryr_selected.isChecked = false
cartItem.selected = false
} else if (!viewHolder.itemView.ryr_selected.isChecked) {
viewHolder.itemView.ryr_selected.isChecked = true
cartItem.selected = true
}
}
}
}
下面是在活动中工作但在片段中不工作的代码
通常,您的数据类以及项
不应该是可变的,在这种情况下,应该是这样的:
class BindCartItemList(val cartItem: CartList, val actionHandler: ActionHandler) : Item<GroupieViewHolder>() {
interface ActionHandler {
fun onCartItemDecreaseClicked(cartItem: CartList)
fun onCartItemIncreaseClicked(cartItem: CartList)
fun onCartItemSelectionToggled(cartItem: CartList, shouldBeChecked: Boolean)
}
private val mConvert = FormatConversion() // compact conversion
override fun getLayout() = R.layout.ryr_cartlist_with_select
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
viewHolder.itemView.ryr_product_name.text = cartItem.product?.productName
viewHolder.itemView.ryr_quantity.setText(cartItem.quantity.toString())
viewHolder.itemView.ryr_product_barcode.text = cartItem.product?.productBarcode
viewHolder.itemView.ryr_amount.text = mConvert.compactAmount(cartItem.quantity * cartItem.product?.price!!)
//quantity increase
viewHolder.itemView.ryr_btn_increase.setOnClickListener {
actionHandler.onCartItemIncreaseClicked(cartItem)
}
//quantity decrease
viewHolder.itemView.ryr_btn_decrease.setOnClickListener {
actionHandler.onCartItemDecreaseClicked(cartItem)
}
//press container_1 for checkbox
viewHolder.itemView.ryr_container_1.setOnClickListener {
val isChecked = viewHolder.itemView.ryr_selected.isChecked
actionHandler.onCartItemSelectionToggled(cartItem, !isChecked)
}
}
}
所有其他突变都属于适配器项之外,并且可能在片段中处理。
class YourFragment: Fragment(), BindCartItemList.ActionHandler {
....
要更新项,可以刷新适配器中的项,也可以使用item.notifychanged()
。
问题内容: 这个想法是我有一个列表视图,其中每个项目都是一个产品,当我单击该项目时,我需要从列表视图的适配器内部的单击中转到另一个片段。 我的适配器是: 您必须假设所有代码都在工作。 如何转到适配器内的产品Fragment? 问题答案: 为了解决这个问题,我要做的是: 在主类中,我将参数作为值,并通过开关在我感兴趣的main中设置了片段。
问题内容: 我的片段中有一个方法。此方法启动一个新的活动。我想从我的调用此方法。 这是我的代码: HomeFragment.java StaggeredAdapter.java 我该怎么做? 问题答案: 编辑: 这是我现在要使用的。下面提供了较旧的“更轻松”的解决方案。 现在,可以从适配器中的任何位置调用该片段中的方法。 而且,除了通过构造函数提供侦听器之外,我们还可以在适配器中添加另一个方法,例
我有一个使用RecyclerView的列表,我想要的是,当我点击列表项时,它会打开一个片段,我一直在搜索,我只在一个活动中找到了它,但我只在片段中工作,如果我使用活动,它会随着我的操作栏消失,它都在片段中设置。 这是我的适配器类: 我需要将信用卡id发送到片段,调用控制器并从数据库中获取信息,我尝试了使用intent,但只有在使用startActivity(intent)调用活动时才有效。 这里是
错误:(117,63)错误:不兼容的类型:TabThree碎片无法转换为上下文 错误显示在"new GridViewAdapter(这个,图像,名称);" 公共类TabThreeFragment扩展了片段{ //返回inflater.inflate(R.layout.tab_three_fragment,容器,false);} //RequestQueue RequestQueue=截击。newR
我有一个片段类,我想在我的活动的“main”类中调用一个方法。fragment类是静态的,所以这可能是导致问题的原因,尽管我必须使它保持静态。我希望能够在静态类中执行类似的操作: