Skip to content

Instantly share code, notes, and snippets.

@sembozdemir
sembozdemir / MainActivity.kt
Created November 15, 2016 14:23
TodoKotlin - MainActivity.kt (after extracting UI code)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MainActivityUI(TodoListAdapter()).setContentView(this)
}
}
@sembozdemir
sembozdemir / MainActivityUI.kt
Created November 15, 2016 14:20
ToDoKotlin - MainActivityUI.kt
class MainActivityUI(val todoListAdapter: TodoListAdapter) : AnkoComponent<MainActivity> {
override fun createView(ui: AnkoContext<MainActivity>) = with(ui) {
verticalLayout {
recyclerView {
val orientation = LinearLayoutManager.VERTICAL
layoutManager = LinearLayoutManager(ctx, orientation, false)
addItemDecoration(DividerItemDecoration(ctx, LinearLayout.VERTICAL))
adapter = todoListAdapter
}.lparams(width = matchParent,
@sembozdemir
sembozdemir / ViewExtension.kt
Created November 15, 2016 13:45
ToDoKotlin - ViewExtensions.kt
fun EditText.asString(): String = this.text.toString()
fun EditText.clear() {
setText("")
}
@sembozdemir
sembozdemir / ToDoListAdapter.kt
Created November 15, 2016 13:18
ToDoKotlin - ToDoListAdapter.kt
class TodoListAdapter(val arrayList: ArrayList<String> = ArrayList<String>())
: RecyclerView.Adapter<TodoListAdapter.ViewHolder>() {
override fun getItemCount(): Int = arrayList.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView = TextView(parent.context).apply {
padding = dip(16)
}
@sembozdemir
sembozdemir / MainActivity.kt
Created November 15, 2016 13:09
ToDoKotlin - MainActivity.kt (with Anko DSL)
class MainActivity : AppCompatActivity() {
val todoListAdapter = TodoListAdapter()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
verticalLayout {
recyclerView {
val orientation = LinearLayoutManager.VERTICAL
@sembozdemir
sembozdemir / build.gradle
Created November 15, 2016 13:04
ToDoKotlin - app/build.gradle after Anko dependencies added
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.sembozdemir.todokotlin"
minSdkVersion 16
@sembozdemir
sembozdemir / ankodsl.kt
Created November 15, 2016 12:52
Sample Anko DSL
verticalLayout {
val name = editText()
button("Say Hello") {
onClick { toast("Hello, ${name.text}!") }
}
}
@sembozdemir
sembozdemir / MainActivity.kt
Created November 15, 2016 12:27
TodoKotlin- MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
@sembozdemir
sembozdemir / build.gradle
Last active November 15, 2016 12:15
ToDoKotlin - app/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.sembozdemir.todokotlin"
minSdkVersion 16
@sembozdemir
sembozdemir / build.gradle
Created November 15, 2016 12:11
ToDoKotlin - Project Level build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.0.5'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"