Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 删除项目时从适配器通知活动(emptyView)_Android_Android Recyclerview_Kotlin - Fatal编程技术网

Android 删除项目时从适配器通知活动(emptyView)

Android 删除项目时从适配器通知活动(emptyView),android,android-recyclerview,kotlin,Android,Android Recyclerview,Kotlin,让我们在开头定义一个变量,它将更易于阅读: sqlite3列KEY\u TITLE=A 我用游标加载器进行传导。当列A中没有行时,我希望活动显示一个空视图。为此,我创建了一个方法,用于检查列a中的所有行是否有数据 fun hideLayout(){ val isEmpty = emptyViewObserver(applicationContext).isEmpty() if (isEmpty) { recyclerView.visibil

让我们在开头定义一个变量,它将更易于阅读:
sqlite3列
KEY\u TITLE
=
A

我用游标加载器进行传导。当列
A
中没有行时,我希望活动显示一个空视图。为此,我创建了一个方法,用于检查列
a
中的所有行是否有数据

fun hideLayout(){
        val isEmpty = emptyViewObserver(applicationContext).isEmpty()
        if (isEmpty) {
            recyclerView.visibility = View.GONE
            emptyView.visibility = View.VISIBLE
        } else {
            recyclerView.visibility = View.VISIBLE
            emptyView.visibility = View.GONE
        }

    }
使用
isEmpty
方法初始化
emptyViewServer

 class emptyViewObserver(val context: Context){

        fun isEmpty():Boolean{
            val db = WalletDbHelper(context).readableDatabase
            val projection = arrayOf(KEY_TITLE)

            val cursor = db.query(
                    WalletEntry.TABLE_NAME,
                    projection,
                    null,
                    null,
                    null,
                    null,
                    null
            )

            val names = mutableListOf<String>()
            with(cursor){
                while (moveToNext()){
                    val name = getString(cursor.getColumnIndexOrThrow(WalletEntry.KEY_TITLE))
                    names.add(name)
                }
            }
            db.close()
            return names.isEmpty()
        }
    }
并删除():


你知道我怎么写这段代码吗?

你需要一个回调,当你删除某个项目时,检查是否是最后一个项目,如果是真的,调用它

在适配器上添加此接口:

interface OnListIsEmpty{
    fun onListIsEmpty()
}
并在适配器中创建一个类似全局变量的对象:

private var mOnListIsEmpty: OnListIsEmpty? = null
添加setter方法:

fun setOnListIsEmpty(onListIsEmpty: OnListIsEmpty){
    this.mOnListIsEmpty = onListIsEmpty
}
在delete方法中,如果为空,则进行验证如果为真,则:

    mOnListIsEmpty?.onListIsEmpty()
在初始化适配器时,不要忘记设置回调:

adapter.setOnListIsEmpty(object : OnListIsEmpty{
        override fun onListIsEmpty() {
            //your action
        }
    })
    mOnListIsEmpty?.onListIsEmpty()
adapter.setOnListIsEmpty(object : OnListIsEmpty{
        override fun onListIsEmpty() {
            //your action
        }
    })