Skip to content

ItemWrapper

Version 1.1.1

ItemWrapper 用于向适配器设置列表项的布局 id 以及设置列表项点击事件。

设置布局 id

直接设置:

Version 1.2.0

你可以在向适配器添加数据项时直接设置对应的布局 id ,例如:

mAdapter.add(readContacts(), R.layout.item_contact)

查看示例代码

设置点击事件

通用点击事件

Version 1.1.1

如果你想要为列表项设置通用点击事件,通常只需要进行以下操作:

mImageAdapter.apply {
    setOnItemClickListener { _, pos, _ ->
        showShortMsg("Click event and pos is $pos.")
    }
    setOnItemLongClickListener { _, pos, _ ->
        showShortMsg("Long click event and pos is $pos.")
        true
    }
}

查看示例代码

列表项点击事件

Version 1.1.1

列表项点击事件说明

如果你为列表项单独定义了点击事件,那么它不再支持通用点击事件。

你可以借助 ItemWrapper 为不同类型的列表项设置点击事件 ,例如:

// 定义点击事件
private val showDialog = OnItemClickListener<Images.Image> { view, _, _ ->
    MaterialAlertDialogBuilder(view.context).setMessage("这是一个点击事件").show()
}
private val showSnackBar = OnItemClickListener<Images.Image> { _, _, _ ->
    getSnackbar().setText("列表项被点击").show()
}

// 根据不同的 index 设置点击事件
if (0 == index % 2) {
    ItemWrapper(image, image.getLayoutId(), showDialog)
} else {
    ItemWrapper(image, image.getLayoutId(), showSnackBar)
}

查看示例代码

列表项内部控件点击事件

Version 1.2.0

你可以借助 ItemWrapper 为列表项内部的控件添加点击事件,例如:

mAdapter.add(readContacts(), R.layout.item_contact) {
    addOnItemChildClickListener(R.id.name) { _, _, contact ->
        SimpleToast.showShortMsg("名字是 ${contact?.name}")
    }
    addOnItemChildClickListener(R.id.number) { _, _, contact ->
        SimpleToast.showShortMsg("电话号码是 ${contact?.number}")
    }
}

查看示例代码