android - 在 RecyclerView 适配器中使用带有 Activity 作为参数的方法
问题描述
我的 RecyclerView 适配器有问题。我想在我的 RecyclerView Adapter 类中调用这个方法:
class UIManager {
companion object {
fun updateElem(fromActivity: Activity?)
{
if (fromActivity == null) { return }
val number: TextView = fromActivity.findViewById(R.id.box)
var chest = fromActivity.resources.getString(R.string.chests)
if (DataManager.boxes?.size!! < 2)
chest = fromActivity.resources.getString(R.string.chest)
number.text = DataManager.boxes?.size?.let { "" + DataManager.boxes?.size + " " + chest } ?: "0 " + chest
}
}
}
通常我可以在我的适配器中创建一个方法并将 Activity 作为参数传递,然后调用 updateElem()。
但是我尝试了很多东西,但它对我没有用,因为即使我这样做了,我也会在我的适配器的覆盖方法中调用它,请参阅:
class RecyclerAdapter(val list: ArrayList<String>) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>()
{
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view: View = LayoutInflater.from(parent.context).inflate((R.layout.box_elem), parent, false)
return ViewHolder(view)
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getItemViewType(position: Int): Int {
return position
}
override fun getItemCount(): Int {
return list.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.image.setImageResource(R.drawable.original_box)
holder.itemView.setOnClickListener(View.OnClickListener {
removeElemAt(position)
})
}
fun removeElemAt(position: Int) {
list.removeAt(position)
notifyItemRemoved(position)
notifyItemRangeChanged(position, list.size)
// I WANT TO USE THE METHOD HERE
// !!
UIManager.updateElem() <--------------
//
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
var image: ImageView = itemView.findViewById(R.id.box_elem)
}
}
}
解决方案
如果您需要一个活动引用,您可以在创建它时将其传递给适配器的构造函数:
class RecyclerAdapter(val activity: Activity, val list: ArrayList<String>)
//...
然后,您可以将 activity 属性用于 UIManager.updateElem(activity) 调用。
推荐阅读
- python - matplotlib 中的一个绘图中有很多行
- botframework - 有什么方法可以指定 QnA 对(QnA Maker)中替代问题的顺序?
- css - 冻结动画css上的状态位置
- python - python中有没有办法让拟合数据的幅度与原始数据相匹配
- python - 在 Python 中使用布尔值
- excel - VBA循环通过图表设置图表类型(xlLine),系列重量,系列颜色,图表图例(向下),图表高度和宽度
- python - 仅在按下按钮时播放 OpenCV 视频 TKinter
- android - Flutter 材质抽屉导航到页面
- html - 无法滚动菜单 - 菜单“后面”的内容滚动
- node-config - node-config 始终返回默认设置