【问题标题】:How to handle onPause and onResume within adapter? [closed]如何在适配器中处理 onPause 和 onResume? [关闭]
【发布时间】:2019-08-17 07:25:37
【问题描述】:

如何更改回收站视图的 onPause 和 onResume 项?

【问题讨论】:

  • 你能在这里分享你的代码吗?
  • 这只是recyclerview中带有播放暂停按钮的对话框。代码太大而无法共享,所有内容都如此紧密,以至于我无法总结,您将无法获得太多。我很确定我的两个问题都是通用的,不需要查看代码
  • 你能不能试试你的函数onResume方法。
  • 我不明白你想说什么?
  • 请分享一些代码

标签: android adapter android-recyclerview onpause


【解决方案1】:

您可以在interface 的帮助下完成此操作

定义接口

 interface OnActivityStateChanged{
    fun onResumed()
    fun onPaused()
}

在你的适配器中,定义一个函数来注册接口

 fun registerActivityState()  = object : OnActivityStateChanged{
    override fun onResumed() {
        Log.d("SimpleTextListAdapter", "onResumed: ")
    }

    override fun onPaused() {

        Log.d("SimpleTextListAdapter", "onPaused: ")
    }

}

在activity中创建并初始化界面

var onActivityStateChanged:OnActivityStateChanged? = null
...

// after adapter intitialization, intialize your interface
onActivityStateChanged  = adapter.registerActivityState()

最后,在您的活动周期方法中

override fun onPause() {
    onActivityStateChanged?.onPaused()
    super.onPause()
}

override fun onResume() {
    onActivityStateChanged?.onResumed()
    super.onResume()
}

这个方法适合我

这是上面代码的java实现,可能有编译错误,因为我只是在没有任何IDE的情况下编写的

 interface OnActivityStateChanged{
    void onResumed()
    void onPaused()
}

....
public OnActivityStateChanged registerActivityState() {

  return new OnActivityStateChanged{
        @Override
        public void onResumed() {
            Log.d("SimpleTextListAdapter", "onResumed: ")
        }

        @Override
        public void onPaused() {

            Log.d("SimpleTextListAdapter", "onPaused: ")
        }

}

...

OnActivityStateChanged onActivityStateChanged = null
...

// after adapter intitialization, intialize your interface
onActivityStateChanged  = adapter.registerActivityState()


...

@Override
public fun onPause() {

    if(onActivityStateChanged != null)
        onActivityStateChanged.onPaused()
    super.onPause()
}

@Override
public fun onResume() {

    if(onActivityStateChanged != null)
        onActivityStateChanged.onResumed()
    super.onResume()
}

【讨论】:

  • 如果您在实施中有任何问题,请告诉我,如果您的问题得到解决,请将我的回答标记为已接受
  • 感谢@Aziz 的回答,我正在我的代码中实现它,如果它有效,我一定会将它标记为已接受。
  • 可以分享一下注册部分的java代码吗?
  • 仍在等待回复。如果您可以共享 java 代码,将有很大的帮助,至少对于注册部分而言。我不懂科特林。
  • 好吧,这就是我问实施的原因,哈哈,因为在某个地方我认为您可能在使用 kotlin 时遇到了问题。但可以肯定的是,我也会帮助你编写 java 代码。
猜你喜欢
  • 2018-04-25
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多