Skip to content

Commit 03d750c

Browse files
committed
Convert sample to kt
1 parent ae58c4a commit 03d750c

File tree

17 files changed

+304
-534
lines changed

17 files changed

+304
-534
lines changed

adapterflowlayout/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ android {
2121
}
2222

2323
dependencies {
24-
compileOnly 'com.wefika:flowlayout:0.4.1'
24+
compileOnly("com.wefika:flowlayout:0.4.1") {
25+
exclude group: 'com.intellij', module: 'annotations'
26+
}
2527
compileOnly project(':adapterlayout')
2628
}
2729

adapterlayout-kotlin/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ android {
2222
}
2323

2424
dependencies {
25-
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"
25+
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
2626

2727
compileOnly project(':adapterlayout')
2828
}

app/build.gradle

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
apply plugin: 'com.android.application'
22

3+
apply plugin: 'kotlin-android'
4+
35
android {
46
compileSdkVersion rootProject.ext.compileSdkVersion
57

@@ -23,11 +25,13 @@ android {
2325
}
2426

2527
dependencies {
26-
27-
implementation "androidx.appcompat:appcompat:1.0.0"
28+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
29+
implementation "androidx.appcompat:appcompat:1.1.0"
2830
implementation "com.google.android.material:material:1.0.0"
2931

30-
implementation 'com.wefika:flowlayout:0.4.1'
32+
implementation("com.wefika:flowlayout:0.4.1") {
33+
exclude group: 'com.intellij', module: 'annotations'
34+
}
3135

3236
implementation project(':adapterlayout')
3337

app/src/main/java/com/commit451/adapterlayout/sample/AdapterFlowLayoutActivity.java

Lines changed: 0 additions & 72 deletions
This file was deleted.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.commit451.adapterlayout.sample
2+
3+
import android.os.Bundle
4+
import android.view.View
5+
import android.widget.Toast
6+
import androidx.appcompat.app.AppCompatActivity
7+
import androidx.appcompat.widget.Toolbar
8+
import com.commit451.adapterflowlayout.AdapterFlowLayout
9+
import java.util.*
10+
11+
class AdapterFlowLayoutActivity : AppCompatActivity() {
12+
13+
private lateinit var toolbar: Toolbar
14+
private lateinit var adapterFlowLayout: AdapterFlowLayout
15+
16+
private lateinit var adapter: CheeseAdapter
17+
18+
override fun onCreate(savedInstanceState: Bundle?) {
19+
super.onCreate(savedInstanceState)
20+
val listener = { cheese: Cheese ->
21+
Toast.makeText(this, "${cheese.name} clicked", Toast.LENGTH_SHORT)
22+
.show()
23+
}
24+
setContentView(R.layout.activity_custom_adapter_layout)
25+
toolbar = findViewById(R.id.toolbar)
26+
adapterFlowLayout = findViewById(R.id.adapter_layout)
27+
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_24dp)
28+
toolbar.setNavigationOnClickListener { onBackPressed() }
29+
adapter = CheeseAdapter(listener)
30+
adapterFlowLayout.adapter = adapter
31+
32+
findViewById<View>(R.id.add_cheese).setOnClickListener { adapter.add(Cheeses.randomCheese) }
33+
findViewById<View>(R.id.remove_cheese).setOnClickListener { adapter.removeLast() }
34+
findViewById<View>(R.id.new_adapter).setOnClickListener {
35+
adapterFlowLayout.adapter = null
36+
adapter = CheeseAdapter(listener)
37+
adapterFlowLayout.adapter = adapter
38+
}
39+
loadCheeses()
40+
}
41+
42+
private fun loadCheeses() {
43+
val cheeses = ArrayList<Cheese>()
44+
for (i in 0..4) {
45+
cheeses.add(Cheeses.randomCheese)
46+
}
47+
adapter.setData(cheeses)
48+
}
49+
}

app/src/main/java/com/commit451/adapterlayout/sample/Cheese.java

Lines changed: 0 additions & 15 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.commit451.adapterlayout.sample
2+
3+
/**
4+
* A fake model to show usage
5+
*/
6+
data class Cheese(
7+
val drawable: Int,
8+
var name: String
9+
)

app/src/main/java/com/commit451/adapterlayout/sample/CheeseAdapter.java

Lines changed: 0 additions & 114 deletions
This file was deleted.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package com.commit451.adapterlayout.sample
2+
3+
import android.view.ViewGroup
4+
import androidx.recyclerview.widget.RecyclerView
5+
import com.commit451.adapterlayout.AdapterLayout
6+
7+
/**
8+
* Adapter for the recyclerview, which holds cheeses
9+
*/
10+
class CheeseAdapter(private val listener: (cheese: Cheese) -> Unit) : RecyclerView.Adapter<CheeseViewHolder>() {
11+
12+
private val values = mutableListOf<Cheese>()
13+
14+
fun setData(cheeses: Collection<Cheese>) {
15+
values.clear()
16+
values.addAll(cheeses)
17+
notifyDataSetChanged()
18+
}
19+
20+
fun add(cheese: Cheese) {
21+
values.add(cheese)
22+
notifyItemInserted(values.size - 1)
23+
}
24+
25+
fun removeLast() {
26+
if (values.isNotEmpty()) {
27+
val removeIndex = values.size - 1
28+
remove(removeIndex)
29+
}
30+
}
31+
32+
fun remove(index: Int) {
33+
values.removeAt(index)
34+
notifyItemRemoved(index)
35+
}
36+
37+
fun changeMiddle() {
38+
if (values.isNotEmpty()) {
39+
val index = values.size / 2
40+
values[index].name = "Swiss"
41+
notifyItemChanged(index)
42+
}
43+
}
44+
45+
fun changeAll() {
46+
if (values.isNotEmpty()) {
47+
for (cheese in values) {
48+
cheese.name = "Swiss"
49+
}
50+
notifyItemRangeChanged(0, values.size)
51+
}
52+
}
53+
54+
fun clear() {
55+
if (values.isNotEmpty()) {
56+
val size = values.size
57+
values.clear()
58+
notifyItemRangeRemoved(0, size)
59+
}
60+
}
61+
62+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CheeseViewHolder {
63+
val holder = CheeseViewHolder.inflate(parent)
64+
holder.itemView.setOnClickListener {
65+
//Takes the place of holder.getAdapterPosition()
66+
val position = AdapterLayout.getAdapterPosition(holder)
67+
val cheese = getItemAt(position)
68+
listener.invoke(cheese)
69+
}
70+
holder.buttonRemove.setOnClickListener {
71+
val position = AdapterLayout.getAdapterPosition(holder)
72+
remove(position)
73+
}
74+
return holder
75+
}
76+
77+
override fun onBindViewHolder(holder: CheeseViewHolder, position: Int) {
78+
val cheese = getItemAt(position)
79+
holder.bind(cheese)
80+
}
81+
82+
override fun getItemCount(): Int {
83+
return values.size
84+
}
85+
86+
private fun getItemAt(position: Int): Cheese {
87+
return values[position]
88+
}
89+
}

0 commit comments

Comments
 (0)