Skip to content

Commit 1a86b44

Browse files
committed
cleanup for the kotlin conversion
1 parent 26765fd commit 1a86b44

File tree

6 files changed

+85
-101
lines changed

6 files changed

+85
-101
lines changed

changelog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## Changelog
22

3+
### Version 2.0.1:
4+
- Kotlin cleanup
5+
36
### Version 2.0.0:
47
- Built on Kotlin
58
- Extension method support for `TextView#applyLinks` to avoid boilerplate of creating the `LinkBuilder`

example/src/main/java/com/klinker/android/link_builder_example/HtmlLinkExampleActivity.kt

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ class HtmlLinkExampleActivity : AppCompatActivity() {
3131
setSupportActionBar(toolbar)
3232
toolbar.setTitle(R.string.app_name)
3333

34-
3534
val demo1 = findViewById<View>(R.id.demo1) as TextView
3635
demo1.text = Html.fromHtml(TEXT)
3736
demo1.applyLinks(getLinks())
@@ -43,22 +42,14 @@ class HtmlLinkExampleActivity : AppCompatActivity() {
4342

4443
private fun getLinks(): List<Link> {
4544
val google = Link("www.google.com")
46-
google.setTextColor(Color.parseColor("#00BCD4"))
47-
google.setHighlightAlpha(.4f)
48-
google.setOnClickListener(object : Link.OnClickListener {
49-
override fun onClick(clickedText: String) {
50-
showToast("clicked: $clickedText")
51-
}
52-
})
45+
.setTextColor(Color.parseColor("#00BCD4"))
46+
.setHighlightAlpha(.4f)
47+
.setOnClickListener { showToast("clicked: $it") }
5348

5449
val exampleText = Link("this")
55-
exampleText.setTextColor(Color.parseColor("#00BCD4"))
56-
exampleText.setHighlightAlpha(.4f)
57-
exampleText.setOnClickListener(object : Link.OnClickListener {
58-
override fun onClick(clickedText: String) {
59-
showToast("clicked the example text")
60-
}
61-
})
50+
.setTextColor(Color.parseColor("#00BCD4"))
51+
.setHighlightAlpha(.4f)
52+
.setOnClickListener { showToast("clicked the example text") }
6253

6354
return listOf(google, exampleText)
6455
}
@@ -68,7 +59,8 @@ class HtmlLinkExampleActivity : AppCompatActivity() {
6859
}
6960

7061
companion object {
71-
72-
private const val TEXT = "Here is an example link <a href=\"www.google.com\">www.google.com</a>." + "To show it alongside other LinkBuilder functionality, lets highlight this."
62+
private const val TEXT =
63+
"Here is an example link <a href=\"www.google.com\">www.google.com</a>." +
64+
"To show it alongside other LinkBuilder functionality, lets highlight this."
7365
}
7466
}

example/src/main/java/com/klinker/android/link_builder_example/MainActivity.kt

Lines changed: 23 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -47,65 +47,41 @@ class MainActivity : AppCompatActivity() {
4747

4848
private fun getLinks(): List<Link> {
4949
val github = Link("TextView-LinkBuilder")
50-
github.setTypeface(Typeface.DEFAULT_BOLD)
51-
.setOnClickListener(object : Link.OnClickListener {
52-
override fun onClick(clickedText: String) {
53-
openLink(GITHUB_LINK)
54-
}
55-
})
50+
.setTypeface(Typeface.DEFAULT_BOLD)
51+
.setOnClickListener { openLink(GITHUB_LINK) }
5652

5753
val mentions = Link(Pattern.compile("@\\w{1,15}"))
58-
mentions.setTextColor(Color.parseColor("#00BCD4"))
59-
mentions.setHighlightAlpha(.4f)
60-
mentions.setOnClickListener(object : Link.OnClickListener {
61-
override fun onClick(clickedText: String) {
62-
openLink(TWITTER_PROFILE + clickedText.replace("@", ""))
63-
}
64-
})
54+
.setTextColor(Color.parseColor("#00BCD4"))
55+
.setHighlightAlpha(.4f)
56+
.setOnClickListener { clickedText ->
57+
openLink(TWITTER_PROFILE + clickedText.replace("@", ""))
58+
}
6559

6660
val numbers = Link(Pattern.compile("[0-9]+"))
67-
numbers.setTextColor(Color.parseColor("#FF9800"))
68-
numbers.setOnClickListener(object : Link.OnClickListener {
69-
override fun onClick(clickedText: String) {
70-
showToast("Clicked: $clickedText")
71-
}
72-
})
61+
.setTextColor(Color.parseColor("#FF9800"))
62+
.setOnClickListener { showToast("Clicked: $it") }
7363

7464
val longClickHere = Link("here")
75-
longClickHere.setTextColor(Color.parseColor("#259B24"))
76-
longClickHere.setOnLongClickListener(object : Link.OnLongClickListener {
77-
override fun onLongClick(clickedText: String) {
78-
showToast("You long clicked. Nice job.")
79-
}
80-
})
65+
.setTextColor(Color.parseColor("#259B24"))
66+
.setOnLongClickListener { showToast("You long clicked. Nice job.") }
8167

82-
val yes = Link("Yes")
83-
yes.setUnderlined(true)
84-
yes.setTextColor(Color.parseColor("#FFEB3B"))
68+
val yes = Link("Yes").setUnderlined(true)
69+
.setTextColor(Color.parseColor("#FFEB3B"))
8570

86-
val no = Link("No")
87-
no.setUnderlined(false)
88-
no.setTextColor(Color.parseColor("#FFEB3B"))
71+
val no = Link("No").setUnderlined(false)
72+
.setTextColor(Color.parseColor("#FFEB3B"))
8973

90-
val bold = Link("bold")
91-
bold.setBold(true)
92-
bold.setTextColor(Color.parseColor("#FF0000"))
74+
val bold = Link("bold").setBold(true)
75+
.setTextColor(Color.parseColor("#FF0000"))
9376

94-
val prepend = Link("prepended")
95-
prepend.setPrependedText("(!)")
96-
97-
val appended = Link("appended")
98-
appended.setAppendedText("(!)")
77+
val prepend = Link("prepended").setPrependedText("(!)")
78+
val appended = Link("appended").setAppendedText("(!)")
9979

10080
val playStore = Link("Play Store")
101-
playStore.setTextColor(Color.parseColor("#FF9800"))
102-
playStore.setTextColorOfHighlightedLink(Color.parseColor("#FF6600"))
103-
playStore.setHighlightAlpha(0f)
104-
playStore.setOnClickListener(object : Link.OnClickListener {
105-
override fun onClick(clickedText: String) {
106-
openLink(PLAY_STORE)
107-
}
108-
})
81+
.setTextColor(Color.parseColor("#FF9800"))
82+
.setTextColorOfHighlightedLink(Color.parseColor("#FF6600"))
83+
.setHighlightAlpha(0f)
84+
.setOnClickListener { openLink(PLAY_STORE) }
10985

11086
return listOf(github, mentions, numbers, longClickHere, yes, no, bold, prepend, appended, playStore)
11187
}

example/src/main/java/com/klinker/android/link_builder_example/list_view_example/SampleAdapter.kt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,8 @@ class SampleAdapter(private val mContext: Context) : BaseAdapter() {
3636
val textView = convertView as LinkConsumableTextView?
3737
textView!!.text = String.format(TEXT, position)
3838

39-
// Add 2 Links
40-
val link1 = Link(LINK1).setOnClickListener(object : Link.OnClickListener {
41-
override fun onClick(clickedText: String) {
42-
Log.d(TAG, LINK1)
43-
}
44-
})
45-
46-
val link2 = Link(LINK2).setOnClickListener(object : Link.OnClickListener {
47-
override fun onClick(clickedText: String) {
48-
Log.d(TAG, LINK2)
49-
}
50-
})
39+
val link1 = Link(LINK1).setOnClickListener { Log.d(TAG, LINK1) }
40+
val link2 = Link(LINK2).setOnClickListener { Log.d(TAG, LINK2) }
5141

5242
textView.applyLinks(link1, link2)
5343
return convertView
@@ -60,5 +50,6 @@ class SampleAdapter(private val mContext: Context) : BaseAdapter() {
6050
private const val LINK1 = "First link"
6151
private const val LINK2 = "Second link"
6252
private const val TEXT = "This is item %d. $LINK1 $LINK2"
53+
6354
}
6455
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# limitations under the License.
1515
#
1616

17-
VERSION_NAME=2.0.0
17+
VERSION_NAME=2.0.1
1818
VERSION_CODE=19
1919

2020
MIN_SDK=14

library/src/main/java/com/klinker/android/link_builder/Link.kt

Lines changed: 46 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,30 @@ import java.util.regex.Pattern
2222
@Suppress("MemberVisibilityCanBePrivate")
2323
class Link {
2424

25-
internal var text: String? = null
26-
private set
27-
internal var prependedText: String? = null
28-
private set
29-
internal var appendedText: String? = null
30-
private set
31-
internal var pattern: Pattern? = null
32-
private set
33-
internal var textColor = 0
34-
private set
35-
internal var textColorOfHighlightedLink = 0
36-
private set
37-
internal var highlightAlpha = DEFAULT_ALPHA
38-
private set
39-
internal var underlined = true
40-
private set
41-
internal var bold = false
42-
private set
43-
internal var typeface: Typeface? = null
44-
private set
45-
internal var clickListener: OnClickListener? = null
46-
private set
47-
internal var longClickListener: OnLongClickListener? = null
48-
private set
25+
var text: String? = null
26+
set(value) { setText(value!!) }
27+
var prependedText: String? = null
28+
set(value) { setPrependedText(value!!) }
29+
var appendedText: String? = null
30+
set(value) { setAppendedText(value!!) }
31+
var pattern: Pattern? = null
32+
set(value) { setPattern(value!!) }
33+
var textColor = 0
34+
set(value) { setTextColor(value) }
35+
var textColorOfHighlightedLink = 0
36+
set(value) { setTextColorOfHighlightedLink(value) }
37+
var highlightAlpha = DEFAULT_ALPHA
38+
set(value) { setHighlightAlpha(value) }
39+
var underlined = true
40+
set(value) { setUnderlined(value) }
41+
var bold = false
42+
set(value) { setBold(value) }
43+
var typeface: Typeface? = null
44+
set(value) { setTypeface(value!!) }
45+
var clickListener: OnClickListener? = null
46+
set(value) { setOnClickListener(value!!) }
47+
var longClickListener: OnLongClickListener? = null
48+
set(value) { setOnLongClickListener(value!!) }
4949

5050
/**
5151
* Copy Constructor.
@@ -136,6 +136,16 @@ class Link {
136136
return this
137137
}
138138

139+
fun setOnClickListener(listener: (String) -> Unit): Link {
140+
this.clickListener = object : OnClickListener {
141+
override fun onClick(clickedText: String) {
142+
listener(clickedText)
143+
}
144+
}
145+
146+
return this
147+
}
148+
139149
/**
140150
* Specify what happens with a long click.
141151
* @param longClickListener action for the long click.
@@ -146,6 +156,16 @@ class Link {
146156
return this
147157
}
148158

159+
fun setOnLongClickListener(listener: (String) -> Unit): Link {
160+
this.longClickListener = object : OnLongClickListener {
161+
override fun onLongClick(clickedText: String) {
162+
listener(clickedText)
163+
}
164+
}
165+
166+
return this
167+
}
168+
149169
/**
150170
* Specify the text color for the linked text.
151171
* @param color as an integer (not resource).
@@ -209,13 +229,15 @@ class Link {
209229
/**
210230
* Interface to manage the single clicks.
211231
*/
232+
@FunctionalInterface
212233
interface OnClickListener {
213234
fun onClick(clickedText: String)
214235
}
215236

216237
/**
217238
* Interface to manage the long clicks.
218239
*/
240+
@FunctionalInterface
219241
interface OnLongClickListener {
220242
fun onLongClick(clickedText: String)
221243
}

0 commit comments

Comments
 (0)