Kotlin - How to create a class member function similar to TextView.setText(String) that can be invoked as...
What i am trying to create is a Custom AlertDialogBox for which i would like to invoke the "setTitle()" method as alertObject.title = "SomeTitle"
. My current AlertDialog code is as below
class AlertBox(context: Context) : BaseDialogHelper() {
override val dialogView: View by lazy {
LayoutInflater.from(context).inflate(R.layout.custom_dialog, null)
}
override val builder: AlertDialog.Builder = AlertDialog.Builder(context).setView(dialogView)
val txt_title: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_title)
}
val txt_message: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_message)
}
val btn_ok: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_done)
}
val btn_cancel: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_cancel)
}
//These are the methods that i want to change
fun setTitle(title: String) {
txt_title.text = title
}
fun setMessage(message: String) {
txt_message.text = message
}
fun onOkButtonClickListener(func: (() -> Unit)? = null) = with(btn_ok) {
setClickListenerToButton(func)
}
fun onCancelButtonClickListener(func: (() -> Unit)? = null) = with(btn_cancel) {
setClickListenerToButton(func)
}
private fun View.setClickListenerToButton(func: (() -> Unit)?) = setOnClickListener {
func?.invoke()
dialog?.dismiss()
}
}
I would like create a class member function similar to TextView.setText(String) that can be invoked as TextView.text = "". Can this be done for custom classes...?
android kotlin
add a comment |
What i am trying to create is a Custom AlertDialogBox for which i would like to invoke the "setTitle()" method as alertObject.title = "SomeTitle"
. My current AlertDialog code is as below
class AlertBox(context: Context) : BaseDialogHelper() {
override val dialogView: View by lazy {
LayoutInflater.from(context).inflate(R.layout.custom_dialog, null)
}
override val builder: AlertDialog.Builder = AlertDialog.Builder(context).setView(dialogView)
val txt_title: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_title)
}
val txt_message: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_message)
}
val btn_ok: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_done)
}
val btn_cancel: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_cancel)
}
//These are the methods that i want to change
fun setTitle(title: String) {
txt_title.text = title
}
fun setMessage(message: String) {
txt_message.text = message
}
fun onOkButtonClickListener(func: (() -> Unit)? = null) = with(btn_ok) {
setClickListenerToButton(func)
}
fun onCancelButtonClickListener(func: (() -> Unit)? = null) = with(btn_cancel) {
setClickListenerToButton(func)
}
private fun View.setClickListenerToButton(func: (() -> Unit)?) = setOnClickListener {
func?.invoke()
dialog?.dismiss()
}
}
I would like create a class member function similar to TextView.setText(String) that can be invoked as TextView.text = "". Can this be done for custom classes...?
android kotlin
add a comment |
What i am trying to create is a Custom AlertDialogBox for which i would like to invoke the "setTitle()" method as alertObject.title = "SomeTitle"
. My current AlertDialog code is as below
class AlertBox(context: Context) : BaseDialogHelper() {
override val dialogView: View by lazy {
LayoutInflater.from(context).inflate(R.layout.custom_dialog, null)
}
override val builder: AlertDialog.Builder = AlertDialog.Builder(context).setView(dialogView)
val txt_title: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_title)
}
val txt_message: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_message)
}
val btn_ok: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_done)
}
val btn_cancel: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_cancel)
}
//These are the methods that i want to change
fun setTitle(title: String) {
txt_title.text = title
}
fun setMessage(message: String) {
txt_message.text = message
}
fun onOkButtonClickListener(func: (() -> Unit)? = null) = with(btn_ok) {
setClickListenerToButton(func)
}
fun onCancelButtonClickListener(func: (() -> Unit)? = null) = with(btn_cancel) {
setClickListenerToButton(func)
}
private fun View.setClickListenerToButton(func: (() -> Unit)?) = setOnClickListener {
func?.invoke()
dialog?.dismiss()
}
}
I would like create a class member function similar to TextView.setText(String) that can be invoked as TextView.text = "". Can this be done for custom classes...?
android kotlin
What i am trying to create is a Custom AlertDialogBox for which i would like to invoke the "setTitle()" method as alertObject.title = "SomeTitle"
. My current AlertDialog code is as below
class AlertBox(context: Context) : BaseDialogHelper() {
override val dialogView: View by lazy {
LayoutInflater.from(context).inflate(R.layout.custom_dialog, null)
}
override val builder: AlertDialog.Builder = AlertDialog.Builder(context).setView(dialogView)
val txt_title: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_title)
}
val txt_message: TextView by lazy {
dialogView.findViewById<TextView>(R.id.txt_message)
}
val btn_ok: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_done)
}
val btn_cancel: Button by lazy {
dialogView.findViewById<Button>(R.id.btn_cancel)
}
//These are the methods that i want to change
fun setTitle(title: String) {
txt_title.text = title
}
fun setMessage(message: String) {
txt_message.text = message
}
fun onOkButtonClickListener(func: (() -> Unit)? = null) = with(btn_ok) {
setClickListenerToButton(func)
}
fun onCancelButtonClickListener(func: (() -> Unit)? = null) = with(btn_cancel) {
setClickListenerToButton(func)
}
private fun View.setClickListenerToButton(func: (() -> Unit)?) = setOnClickListener {
func?.invoke()
dialog?.dismiss()
}
}
I would like create a class member function similar to TextView.setText(String) that can be invoked as TextView.text = "". Can this be done for custom classes...?
android kotlin
android kotlin
asked Nov 20 '18 at 6:48
Akhil SomanAkhil Soman
1,032616
1,032616
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You need to define a property:
var text: String
get() = txt_title.text
set(value) { txt_title.text = value }
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53387642%2fkotlin-how-to-create-a-class-member-function-similar-to-textview-settextstrin%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need to define a property:
var text: String
get() = txt_title.text
set(value) { txt_title.text = value }
add a comment |
You need to define a property:
var text: String
get() = txt_title.text
set(value) { txt_title.text = value }
add a comment |
You need to define a property:
var text: String
get() = txt_title.text
set(value) { txt_title.text = value }
You need to define a property:
var text: String
get() = txt_title.text
set(value) { txt_title.text = value }
answered Nov 20 '18 at 6:51
yoleyole
60.3k11150143
60.3k11150143
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53387642%2fkotlin-how-to-create-a-class-member-function-similar-to-textview-settextstrin%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown