<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Yoesuv</title><description>Laravel dan Android Tutorial</description><managingEditor>noreply@blogger.com (Unknown)</managingEditor><pubDate>Tue, 18 Aug 2026 14:08:50 +0700</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">108</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://yoesuv.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Laravel dan Android Tutorial</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>Menerapkan Custom Font/Font Family pada Aplikasi Android</title><link>http://yoesuv.blogspot.com/2020/06/menerapkan-custom-fontfont-family-pada.html</link><category>Android</category><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Sun, 7 Jun 2020 17:19:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-3827364568928826520</guid><description>Untuk mengganti atau menerapkan font pada aplikasi android secara efektif dan efisien, sekarang sudah lebih mudah. biasanya dulu membuat custom textview yang diextend untuk diset typefacenya. &lt;br /&gt;
&lt;br /&gt;
aplikasinya seperti berikut ini.menggunakan &lt;a href="https://yoesuv.blogspot.com/2019/07/android-navigation-library-advanced.html" target="_blank"&gt;navigation component&lt;/a&gt; dan ada tab + viewpager.&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://i.imgur.com/0BvoIyl.png" style="width: 180px;" /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://i.imgur.com/H34GvaM.png" style="width: 180px;" /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://i.imgur.com/0T1WDQt.png" style="width: 180px;" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
untuk memulainya pertama buat resource baru. klik kanan res -&amp;gt; new -&amp;gt; Android Resource Directory dan pilih font.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigkaTqt_yrM_dWeexyysx1Sh0mfaousbTppiE8jXAIMbUN2BL416vKh0Xfca_5OksxBywWXXOj_rdrDM8Mo0vcLqvs9HLCScV2wxZozWXc3pnbvIx7J0aAkKS_D3e1O7_-7bjiujUvjsfY/s1600/Screenshot_20200607_102404.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="601" data-original-width="980" height="340" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigkaTqt_yrM_dWeexyysx1Sh0mfaousbTppiE8jXAIMbUN2BL416vKh0Xfca_5OksxBywWXXOj_rdrDM8Mo0vcLqvs9HLCScV2wxZozWXc3pnbvIx7J0aAkKS_D3e1O7_-7bjiujUvjsfY/s640/Screenshot_20200607_102404.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
selanjutnya copy file font yang akan digunakan. disini menggunakan &lt;a href="https://fonts.google.com/specimen/Pacifico" target="_blank"&gt;Pacifico&lt;/a&gt; dan &lt;a href="https://fonts.google.com/specimen/Raleway" target="_blank"&gt;Raleway&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV57xOF2RPEC9fZCEi30J-MLbA6sPaIwfzSGCjTK9HY17E07uU4BRrzyld66PvpB9UFxvwVi3NC5eZ9fCIPDuI5yPikzTT5kMBePWgnZAmt_iXW2ko9QCMJuxlKaAsOgehJel_c1bUjgzg/s1600/Screenshot_20200607_133745.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="92" data-original-width="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV57xOF2RPEC9fZCEi30J-MLbA6sPaIwfzSGCjTK9HY17E07uU4BRrzyld66PvpB9UFxvwVi3NC5eZ9fCIPDuI5yPikzTT5kMBePWgnZAmt_iXW2ko9QCMJuxlKaAsOgehJel_c1bUjgzg/s1600/Screenshot_20200607_133745.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selanjutnya adalah membuat xml font. misal yang raleway kan ada dua jenis regular dan bold. akan disatukan kedalam satu xml.&lt;br /&gt;
&lt;br /&gt;
klik kanan pada font -&amp;gt; New -&amp;gt; Font Resource File dan beri nama xmlnya.  berikut merupakan xml dari font raleway.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv/0115a966668e940569d7f49436775d12.js"&gt;&lt;/script&gt;selanjutnya untuk font pacifico juga sama. buat xml font baru dengan jenis font pacifico. jika sudah selesai xml font akan dimasukkan ke dalam style. berikut contoh stylenya. ada dua style yang pertama untuk style global yang kedua untuk toolbar. (cek contoh aplikasi pada gambar post paling atas)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZn7Gfn1lzBXAJkKsPHnUF4kzcSDNhoPrqRUsPI9CZ7GYb5L6o2QmKHvnzexPrTmn1NSzJt9otd5Mv1Tws7WNbqB9BplLtfF5OHo2VufTPT-jhLugofsQS6QaFVujp4odNKN-0pjGBJDo3/s1600/Screenshot_20200607_140033.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="298" data-original-width="693" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZn7Gfn1lzBXAJkKsPHnUF4kzcSDNhoPrqRUsPI9CZ7GYb5L6o2QmKHvnzexPrTmn1NSzJt9otd5Mv1Tws7WNbqB9BplLtfF5OHo2VufTPT-jhLugofsQS6QaFVujp4odNKN-0pjGBJDo3/s640/Screenshot_20200607_140033.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
jalankan maka font akan sesuai dengan yang ditambahkan.dengan memakai cara ini maka semua font akan otomatis diganti misal bottom navigation, tab bar viewpager dan popup menu yang biasanya tidak otomatis terganti.&lt;br /&gt;
&lt;br /&gt;
untuk lebih jelasnya bisa langsung cek repository &lt;a href="https://github.com/yoesuv-blog/Android-Set-Font" target="_blank"&gt;githubnya&lt;/a&gt;.&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigkaTqt_yrM_dWeexyysx1Sh0mfaousbTppiE8jXAIMbUN2BL416vKh0Xfca_5OksxBywWXXOj_rdrDM8Mo0vcLqvs9HLCScV2wxZozWXc3pnbvIx7J0aAkKS_D3e1O7_-7bjiujUvjsfY/s72-c/Screenshot_20200607_102404.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Switch Language</title><link>http://yoesuv.blogspot.com/2020/06/android-switch-language.html</link><category>Android</category><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 1 Jun 2020 16:43:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-9125783188417743828</guid><description>&lt;div&gt;Kadang pada saat membuat aplikasi android terdapat pengaturan untuk ganti bahasa pada aplikasi. dan bukan bergantung dari pengaturan bahasa di perangkat tentunya. nah, kali ini akan membahas tentang ganti bahasa pada aplikasi android.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;seperti ini nantinya aplikasinya. terdapat radio button untuk berganti bahasa.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYgkXO1rJPmfnRuc21Pd36ULnouI8ZPIZkMXT9KK5s3yEZjSbkpwC7yM9-G14rzwrDTRQ_GYjBVf5oT0haTMdeylZan2njpFs05KAwtKU94Y39oF0fj0uB17OUgq_X6yOOwUQWa8rmnD8/" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2220" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYgkXO1rJPmfnRuc21Pd36ULnouI8ZPIZkMXT9KK5s3yEZjSbkpwC7yM9-G14rzwrDTRQ_GYjBVf5oT0haTMdeylZan2njpFs05KAwtKU94Y39oF0fj0uB17OUgq_X6yOOwUQWa8rmnD8/s320/Screenshot_1590979466.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;langkah pertama tentu saja mempersiapkan resource values untuk tempat xml string.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;klik kanan pada res -&amp;gt; new -&amp;gt; Android Resource Directory nanti akan muncul seperti berikut.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz14ebgDQIZQysnkmM8Qd2fcx43xWfuOCp1hfOABt__pFe0C2dP2mI2NQMl3VrM4AMcXKQHtdiguYpbP7qNNNKzNAPclZTO9sQ7_CUOiz96_p-64GzzzQM8zdhw0PWrDrAQ-BNjhHa640_/" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="601" data-original-width="980" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz14ebgDQIZQysnkmM8Qd2fcx43xWfuOCp1hfOABt__pFe0C2dP2mI2NQMl3VrM4AMcXKQHtdiguYpbP7qNNNKzNAPclZTO9sQ7_CUOiz96_p-64GzzzQM8zdhw0PWrDrAQ-BNjhHa640_/w640-h392/Screenshot_20200601_084903.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;pilih bagian Locale, klik tanda &amp;gt;&amp;gt; di tengah, maka akan muncul pilihan bahasa dari negara-negara yang ada. klik OK&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihTZo6hTsUJWGo4v1O7QRamjiJSxHiCxIgjOUzlWIOF6JACOyGdYrHn1VudP4NHHjtz6J__OokH3DdVBXIzey1vqp5-Va1P4Nlp-3VjfzjrqWXqemWTujOTwwdVZldivZfXkQ50xs6yiEt/" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="601" data-original-width="980" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihTZo6hTsUJWGo4v1O7QRamjiJSxHiCxIgjOUzlWIOF6JACOyGdYrHn1VudP4NHHjtz6J__OokH3DdVBXIzey1vqp5-Va1P4Nlp-3VjfzjrqWXqemWTujOTwwdVZldivZfXkQ50xs6yiEt/w640-h392/Screenshot_20200601_084955.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;maka akan ada folder values baru. sesuai yang dipilih seperti diatas.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRzYZwN5GIQCmuHTVrYuY_taDHkJaXNOhI9quOUHE2-x1IFFBIg24DQgE4Vdc7TsmS79z4kNFWom1bRM6m-M1HSxHlUL1Tt9MN9yZ92LLIEmcrjwJ7cbitb4hmD-meShSupTjayIxIjdo/" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="514" data-original-width="320" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRzYZwN5GIQCmuHTVrYuY_taDHkJaXNOhI9quOUHE2-x1IFFBIg24DQgE4Vdc7TsmS79z4kNFWom1bRM6m-M1HSxHlUL1Tt9MN9yZ92LLIEmcrjwJ7cbitb4hmD-meShSupTjayIxIjdo/w249-h400/Screenshot_20200601_095803.png" width="249" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;persiapan sudah selesai, tinggal copy saja string xml nya kedalam folder values baru sesuai bahasa yang akan digunakan. bisa di cek di preview layout design maka akan muncul.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD1qhXwtiJ0QiBi-85WrRdyPj0MNKUQXWOq-CEp8QqXcawF3Np3FAutwVXb6zIGMBLnOIIXZG6HH7sXtlqi-pwyjhZWmmMiFkxw76kLiwS1VLjN6sVrxx8W9fCsyhd5xo393cpFZc2G0lS/" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="589" data-original-width="1012" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD1qhXwtiJ0QiBi-85WrRdyPj0MNKUQXWOq-CEp8QqXcawF3Np3FAutwVXb6zIGMBLnOIIXZG6HH7sXtlqi-pwyjhZWmmMiFkxw76kLiwS1VLjN6sVrxx8W9fCsyhd5xo393cpFZc2G0lS/w640-h372/Screenshot_20200601_101042.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;setelah layout dan values siap, lanjut ke proses coding. untuk pilihan berganti bahasa ini memang ada beberapa cara. dan salah satunya seperti berikut. intinya adalah membuat BaseActivity kemudian di extend ke Activity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pertama buat class context wrapper.&lt;/div&gt;&lt;div&gt;&lt;script src="https://gist.github.com/yoesuv/3ad86d4ce2615f6a83fc2d3a68ba21cb.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;class context wrapper diatas akan dipakai disini. buat class Base Activity. perlu diperhartikan di line 9 bagian Locale itu mengacu pada value di preferences. misal disini EN (english) dan IN (indonesia) bisa ke jawaban stackoverflow &lt;a href="https://stackoverflow.com/a/7989085" target="_blank"&gt;berikut&lt;/a&gt;.&lt;br /&gt;&lt;script src="https://gist.github.com/yoesuv/05fc91f1b58c2233d97a4a0a92f5dd98.js"&gt;&lt;/script&gt;&lt;br /&gt;nah, persiapan sudah selesai. jadi nanti jika akan membuat activity maka akan di extend dari class BaseActivity ini dan bukan AppCompatActivity.&lt;br /&gt;&lt;script src="https://gist.github.com/yoesuv/5832d549f66abe185706fa9dfd5767e2.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;dan jangan lupa setting bahasa ini perlu disimpan ke preferences. bisa memakai &lt;a href="https://github.com/chibatching/kotpref" target="_blank"&gt;Kotpref&lt;/a&gt;. jadi pengaturan bahasa ada EN (english) dan IN (indonesia).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;untuk project lengkapnya bisa dilihat &lt;a href="https://github.com/yoesuv-blog/Android-Switch-Language" target="_blank"&gt;disini&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;selamat mencoba.&lt;br /&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYgkXO1rJPmfnRuc21Pd36ULnouI8ZPIZkMXT9KK5s3yEZjSbkpwC7yM9-G14rzwrDTRQ_GYjBVf5oT0haTMdeylZan2njpFs05KAwtKU94Y39oF0fj0uB17OUgq_X6yOOwUQWa8rmnD8/s72-c/Screenshot_1590979466.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Bentuk Perulangan (Looping) pada Dart</title><link>http://yoesuv.blogspot.com/2019/10/bentuk-perulangan-looping-pada-dart.html</link><category>Dart</category><author>noreply@blogger.com (Unknown)</author><pubDate>Sun, 13 Oct 2019 15:10:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-8254164486415781050</guid><description>untuk melakukan perulangan pada dart, bisa menggunakan &lt;i&gt;keyword&lt;/i&gt; &lt;span style="color: blue;"&gt;for&lt;/span&gt;, &lt;span style="color: blue;"&gt;while&lt;/span&gt; dan &lt;span style="color: blue;"&gt;do while&lt;/span&gt;. berikut contohnya.&lt;br /&gt;
&lt;br /&gt;
yang pertama menggunakan &lt;i&gt;for&lt;/i&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhib8f_XIyEqU-j4OYGIJYOf9xmGhoAC4rFvsB_X9i8RXoLmRW26nT94shgoTEELPOZBTzblNQ8PahSizRZ_BWb-bQKxCbWn6VO_diRLvhMIbOLQrfB0g5bHmUBpvxxgFup__HwQVq9pfVb/s1600/dart_for_looping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="210" data-original-width="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhib8f_XIyEqU-j4OYGIJYOf9xmGhoAC4rFvsB_X9i8RXoLmRW26nT94shgoTEELPOZBTzblNQ8PahSizRZ_BWb-bQKxCbWn6VO_diRLvhMIbOLQrfB0g5bHmUBpvxxgFup__HwQVq9pfVb/s1600/dart_for_looping.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
atau jika bentuk datanya array.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg686JDWZfcowaZuXaVAGVqDMeTwqdA6SVxX-MdWG0Kr2QGecurglLQ0ZuYE5KwUwjGXOakY6nANQ6DAkkczpNqhfQsPFWDG99ftb8CBeol99ywxVG7YLEyS8YD3Mb2F7RPl24oTSLHquo/s1600/dart_for_looping_array.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="200" data-original-width="539" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg686JDWZfcowaZuXaVAGVqDMeTwqdA6SVxX-MdWG0Kr2QGecurglLQ0ZuYE5KwUwjGXOakY6nANQ6DAkkczpNqhfQsPFWDG99ftb8CBeol99ywxVG7YLEyS8YD3Mb2F7RPl24oTSLHquo/s1600/dart_for_looping_array.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selanjutnya menggunakan &lt;i&gt;while&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZfkOYxEAeWcTcg0tFFPQ-NNE2XuzX49I0wjAA3klvrDwQTQ78zfVSr2JE2_1VwSiKVCSvvBltPlRXwJaMG-9766z9r0UL74sykgj9AqrUiv0urYaHSq873Zf4M7_Giy5JfU6ACvFF48Jl/s1600/dart_while_looping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="245" data-original-width="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZfkOYxEAeWcTcg0tFFPQ-NNE2XuzX49I0wjAA3klvrDwQTQ78zfVSr2JE2_1VwSiKVCSvvBltPlRXwJaMG-9766z9r0UL74sykgj9AqrUiv0urYaHSq873Zf4M7_Giy5JfU6ACvFF48Jl/s1600/dart_while_looping.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
yang terakhir menggunakan &lt;i&gt;do while&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyFm57Wpxc6FNR5TaQusYpa8lKd80sXkQQjvgougWu5jhqLcIRPfKZpDVeOr2sLvmGyzl8eJXKkAhZIIPp04ykY4tQLURBaQ9qDyt8yjrc84N6c_kojty-zuf-tmVFbRZvw1SxM4dc6XJi/s1600/dart_do_while_looping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="251" data-original-width="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyFm57Wpxc6FNR5TaQusYpa8lKd80sXkQQjvgougWu5jhqLcIRPfKZpDVeOr2sLvmGyzl8eJXKkAhZIIPp04ykY4tQLURBaQ9qDyt8yjrc84N6c_kojty-zuf-tmVFbRZvw1SxM4dc6XJi/s1600/dart_do_while_looping.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selamat mencoba. </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhib8f_XIyEqU-j4OYGIJYOf9xmGhoAC4rFvsB_X9i8RXoLmRW26nT94shgoTEELPOZBTzblNQ8PahSizRZ_BWb-bQKxCbWn6VO_diRLvhMIbOLQrfB0g5bHmUBpvxxgFup__HwQVq9pfVb/s72-c/dart_for_looping.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Percabangan (Conditional Statement) pada Dart</title><link>http://yoesuv.blogspot.com/2019/10/percabangan-conditional-statement-pada.html</link><category>Dart</category><author>noreply@blogger.com (Unknown)</author><pubDate>Sat, 12 Oct 2019 17:12:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-6084857802836331072</guid><description>Untuk &lt;i&gt;conditional statement&lt;/i&gt; Dart menggunakan keyword &lt;span style="color: blue;"&gt;if&lt;/span&gt; dan &lt;span style="color: blue;"&gt;switch&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
berikut merupakan contoh &lt;i&gt;if&lt;/i&gt; sederhana.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjczszslJN4HBm77zMwAGfdVW1vRPw9huzvlNniovx5Z4TXnwn-PrRrs816I2L_-jbtuKD0G1_YffzzhWCxNSIKgIiyjKT-JDWw8F8FnVfmwUVOjcYlkRX8Gf-F0HehEIj36cXTKmYt3JT2/s1600/dart_conditional_statement.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="206" data-original-width="383" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjczszslJN4HBm77zMwAGfdVW1vRPw9huzvlNniovx5Z4TXnwn-PrRrs816I2L_-jbtuKD0G1_YffzzhWCxNSIKgIiyjKT-JDWw8F8FnVfmwUVOjcYlkRX8Gf-F0HehEIj36cXTKmYt3JT2/s1600/dart_conditional_statement.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
kalau dibuat satu baris (&lt;i&gt;ternary operator&lt;/i&gt;) jadinya akan seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEippvJOMS3YkptZvX7okQYJZQxuz3V7Q9JLmJWOToqBocPR_IB2C1B1lI_Gse25taawFN6JplEpj7jueH1YOw1idao5Fmyu0vx-UXRExU4RvVepFgwsRMagYM8GJlDNxsJoYdQc6MOapsq8/s1600/dart_conditional_statement_ternary.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="188" data-original-width="681" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEippvJOMS3YkptZvX7okQYJZQxuz3V7Q9JLmJWOToqBocPR_IB2C1B1lI_Gse25taawFN6JplEpj7jueH1YOw1idao5Fmyu0vx-UXRExU4RvVepFgwsRMagYM8GJlDNxsJoYdQc6MOapsq8/s640/dart_conditional_statement_ternary.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
kalau berikut ini &lt;i&gt;if&lt;/i&gt; yang lebih kompleks.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf1xy-soYVsrH9qZmKUt93wZg1GJrw7fffSlcEfsqe5AipYYXzQHDU2PQ8y2mZr4VnLwXaIXKPBrWSP890DbCXuhg0yYQDRSz2MN8efsmkJlTHLIMMgIwJUNnMxGyvr6CQ9daSMEP91j2i/s1600/dart_conditional_statement_two.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="399" data-original-width="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf1xy-soYVsrH9qZmKUt93wZg1GJrw7fffSlcEfsqe5AipYYXzQHDU2PQ8y2mZr4VnLwXaIXKPBrWSP890DbCXuhg0yYQDRSz2MN8efsmkJlTHLIMMgIwJUNnMxGyvr6CQ9daSMEP91j2i/s1600/dart_conditional_statement_two.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selanjutnya untuk &lt;i&gt;switch&lt;/i&gt;. nah, untuk dart ini hanya bisa tipe &lt;i&gt;constant&lt;/i&gt; ya. kalau seperti &lt;i&gt;if else&lt;/i&gt; diatas dibuat ke &lt;i&gt;switch&lt;/i&gt; tidak bisa.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh24J9_OS5wgwdc53lk4rMJIP5RDZctO2U6-YthQBrxEzhIk7gdJWBXgivACxBREBRs6mkun3A-5Bu8mOtD57BRQMRPj2bA0b1ThkeJqx-5qelaV64b7DV_d3ESzOo94ouZ4Y6mvv5HR2y/s1600/dart_conditional_statement_switch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="350" data-original-width="264" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh24J9_OS5wgwdc53lk4rMJIP5RDZctO2U6-YthQBrxEzhIk7gdJWBXgivACxBREBRs6mkun3A-5Bu8mOtD57BRQMRPj2bA0b1ThkeJqx-5qelaV64b7DV_d3ESzOo94ouZ4Y6mvv5HR2y/s1600/dart_conditional_statement_switch.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Selamat Mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjczszslJN4HBm77zMwAGfdVW1vRPw9huzvlNniovx5Z4TXnwn-PrRrs816I2L_-jbtuKD0G1_YffzzhWCxNSIKgIiyjKT-JDWw8F8FnVfmwUVOjcYlkRX8Gf-F0HehEIj36cXTKmYt3JT2/s72-c/dart_conditional_statement.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Membuat Kelas pada Dart</title><link>http://yoesuv.blogspot.com/2019/10/membuat-kelas-pada-dart.html</link><category>Dart</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 8 Oct 2019 13:48:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-6045541117783835886</guid><description>Seperti yang sudah diketahui, Dart ini merupakan Object Oriented. maka akan ada pembuatan kelas-kelas seperti bahasa pemrograman OOP lainnya.&lt;br /&gt;
&lt;br /&gt;
Berikut ini merupakan contoh kelas standar pada Dart. dimana terdapat deklarasi &lt;i&gt;variable&lt;/i&gt; dan &lt;i&gt;function&lt;/i&gt;. yang mirip dengan java. bahkan untuk &lt;i&gt;instance&lt;/i&gt; kelas pakai keyword &lt;span style="color: blue;"&gt;new&lt;/span&gt;.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQnB8-06kNMurGcHGQNplgL_TT0OBoVZZgksQiVX0GnaJ3oDHs4swiS_TuvTmuPm5EhfswktygRE4BTdMu73Tmi1zMoIdlvJwXFuuRsUf5lmgY7-G0yr51LTXJdK_ma7jBzlHh5sw-oK6P/s1600/dart_class_standart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="325" data-original-width="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQnB8-06kNMurGcHGQNplgL_TT0OBoVZZgksQiVX0GnaJ3oDHs4swiS_TuvTmuPm5EhfswktygRE4BTdMu73Tmi1zMoIdlvJwXFuuRsUf5lmgY7-G0yr51LTXJdK_ma7jBzlHh5sw-oK6P/s1600/dart_class_standart.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Jika ingin menggunakan &lt;i&gt;constructor&lt;/i&gt; pada kelas tersebut tinggal ditambahkan saja sama seperti java. juga bisa dengan parameter seperti biasa.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOCfmbSHp4h-Ce8lMFY2mxmUVCLz9dgccCIYccJtd19p-vKx-NYFcIppqgXVvud7Vy3fE9-pduw88igq0nQrZyOgoWq-TRdMknTYfQNd5IiSTBTnWNeU1IHfSR-iqfAAJUecTPDTd8PB_/s1600/dart_class_constructor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="381" data-original-width="403" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOCfmbSHp4h-Ce8lMFY2mxmUVCLz9dgccCIYccJtd19p-vKx-NYFcIppqgXVvud7Vy3fE9-pduw88igq0nQrZyOgoWq-TRdMknTYfQNd5IiSTBTnWNeU1IHfSR-iqfAAJUecTPDTd8PB_/s1600/dart_class_constructor.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;Easy&lt;/i&gt;, Selamat Mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQnB8-06kNMurGcHGQNplgL_TT0OBoVZZgksQiVX0GnaJ3oDHs4swiS_TuvTmuPm5EhfswktygRE4BTdMu73Tmi1zMoIdlvJwXFuuRsUf5lmgY7-G0yr51LTXJdK_ma7jBzlHh5sw-oK6P/s72-c/dart_class_standart.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Membuat Fungsi/Method pada Dart</title><link>http://yoesuv.blogspot.com/2019/10/membuat-fungsimethod-pada-dart.html</link><category>Dart</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 8 Oct 2019 09:52:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-4599088795887724762</guid><description>Setelah &lt;a href="https://yoesuv.blogspot.com/2019/10/memulai-belajar-dart.html" target="_blank"&gt;sebelumnya&lt;/a&gt; berkenalan dengan&amp;nbsp;Dart, maka lanjut post ini untuk mempelajari bagaimana membuat &lt;i&gt;function&lt;/i&gt; pada Dart.&lt;br /&gt;
&lt;br /&gt;
Bisa dilihat dibawan contoh codingan Dart untuk pembuatan &lt;i&gt;function&lt;/i&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://pastebin.com/embed_js/mBLMbpdR"&gt;&lt;/script&gt;
&lt;br/&gt;
Pada contoh coding diatas terdapat Type &lt;span style="color: blue;"&gt;String&lt;/span&gt;, &lt;span style="color: blue;"&gt;int&lt;/span&gt; dan &lt;span style="color: blue;"&gt;double&lt;/span&gt;. juga ada &lt;i&gt;function&lt;/i&gt; dengan parameter. jika dijalankan akan jadi seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX8IS2g0S2cmfV6VZk9DTHAF_qSxCM12Jo83g9xlEPbRcT-ig15SHt502aMznSUVro0vDBsZYy0akTRL1O3avviJqMHu6T7VE1RaFwVC4Skq6A6qG6dbZTqNEOlSAnTO_Z2Fc5iHckbsQO/s1600/dart_pad_output_function.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="147" data-original-width="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX8IS2g0S2cmfV6VZk9DTHAF_qSxCM12Jo83g9xlEPbRcT-ig15SHt502aMznSUVro0vDBsZYy0akTRL1O3avviJqMHu6T7VE1RaFwVC4Skq6A6qG6dbZTqNEOlSAnTO_Z2Fc5iHckbsQO/s1600/dart_pad_output_function.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Bagaimana? Mudah bukan?&lt;br/&gt;
Selamat Mencoba. </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX8IS2g0S2cmfV6VZk9DTHAF_qSxCM12Jo83g9xlEPbRcT-ig15SHt502aMznSUVro0vDBsZYy0akTRL1O3avviJqMHu6T7VE1RaFwVC4Skq6A6qG6dbZTqNEOlSAnTO_Z2Fc5iHckbsQO/s72-c/dart_pad_output_function.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Memulai Belajar Dart</title><link>http://yoesuv.blogspot.com/2019/10/memulai-belajar-dart.html</link><category>Dart</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 7 Oct 2019 10:10:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-5919164769310573043</guid><description>&lt;a href="https://dart.dev/" target="_blank"&gt;Dart&lt;/a&gt; merupakan bahasa pemrograman yang dikembangkan oleh google, dan pertama kali diperkenalkan pada tahun 2011. dart ini merupakan bahasa pemrograman &lt;i&gt;multiple runtime environment&lt;/i&gt;. dan salah satunya bisa membuat aplikasi android &amp;amp; iOS sekaligus (seperti React Native).&lt;br /&gt;
&lt;br /&gt;
Dart merupakan object oriented language dan codingnya mirip dengan C, C#, Java dan Javascript. &lt;br /&gt;
&lt;br /&gt;
untuk mulai mencobanya, bisa langsung memakai &lt;a href="https://dartpad.dartlang.org/" target="_blank"&gt;Dartpad Editor&lt;/a&gt;. langsung dari browser tanpa perlu menginstall apa-apa.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2TCATsaXAVVZ_5JcGl-O67gQhN3VzdK2ZbASxqktxAbYRiZPx5zAZ0CLfJA8veRsL7OxtxUWAQ0UBkNIXYdLCl6OzfpGJr60HxS2DGReqgpUVwHbZAGYlRZf3m1I0f6CDul0ohyP4Qobj/s1600/dartpad_editor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2TCATsaXAVVZ_5JcGl-O67gQhN3VzdK2ZbASxqktxAbYRiZPx5zAZ0CLfJA8veRsL7OxtxUWAQ0UBkNIXYdLCl6OzfpGJr60HxS2DGReqgpUVwHbZAGYlRZf3m1I0f6CDul0ohyP4Qobj/s640/dartpad_editor.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="https://dartpad.dartlang.org/" target="_blank"&gt;&amp;nbsp;&lt;b&gt;&lt;span style="font-size: large;"&gt;dartpad.dartlang.org&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
di panel sebelah kiri terdapat editor untuk coding, disebelah kanan terdapat console untuk output yang dibawanya ada tempat untuk informasi codingannya. dan di tengan ada tombol run untuk menjalankan.&lt;br /&gt;
&lt;br /&gt;
langsung saja dibuat ngoding.&lt;br /&gt;
&lt;script src="https://pastebin.com/embed_js/w5MfDbNV"&gt;&lt;/script&gt;

Code diatas jika dijalankan akan seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhanhZgipWOYiVEM6hcWuSv5TXocgNhQwJEB1t5rlNb0rDTh5AMjklToZvNaq_sd0ktMYkurr2Uaj8pT3M2qxfkWusvbzZ68VYW9dEtqrMUiVovPxf2UuBAQECkSc5Kc0RuN6SAQgctQvMM/s1600/dartpad_editor_output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="112" data-original-width="583" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhanhZgipWOYiVEM6hcWuSv5TXocgNhQwJEB1t5rlNb0rDTh5AMjklToZvNaq_sd0ktMYkurr2Uaj8pT3M2qxfkWusvbzZ68VYW9dEtqrMUiVovPxf2UuBAQECkSc5Kc0RuN6SAQgctQvMM/s640/dartpad_editor_output.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Dari potongan code diatas mungkin sudah bisa sedikit memahami tentang Dart ini. misal harus ada titik koma di akhir seperti Java dan bagaimana cara membuat fungsi.&lt;br /&gt;
&lt;br /&gt;
Selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2TCATsaXAVVZ_5JcGl-O67gQhN3VzdK2ZbASxqktxAbYRiZPx5zAZ0CLfJA8veRsL7OxtxUWAQ0UBkNIXYdLCl6OzfpGJr60HxS2DGReqgpUVwHbZAGYlRZf3m1I0f6CDul0ohyP4Qobj/s72-c/dartpad_editor.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Maksimalkan Debugging Saat Membangun Aplikasi Android</title><link>http://yoesuv.blogspot.com/2019/10/maksimalkan-debugging-saat-membangun.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 1 Oct 2019 08:40:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-5013412916456180703</guid><description>Tentu pada saat mendevelop aplikasi android perlu proses debugging. nah berikut ini merupakan hal-hal yang bisa digunakan/dimaksimalkan pada saat debugging agar aplikasinya semakin berkualitas.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Menggunakan Logcat&lt;/b&gt;&lt;br /&gt;
yang ini merupakan tools untuk menampilkan log pada aplikasi android.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvAbdTbtQukzyyrI7BWUscXR2AylGERwmECVupCviDszQkD0htLCYF-kOE0QJiu2ViMrSslp87ko-nKnvdqoqWzxarUkGr73NM1FzY90E5Vw5hBbn1H63ksTZY2r34z1pRtA0_feaZwjcf/s1600/android_log_cat.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="528" data-original-width="1366" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvAbdTbtQukzyyrI7BWUscXR2AylGERwmECVupCviDszQkD0htLCYF-kOE0QJiu2ViMrSslp87ko-nKnvdqoqWzxarUkGr73NM1FzY90E5Vw5hBbn1H63ksTZY2r34z1pRtA0_feaZwjcf/s640/android_log_cat.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
untuk mengganti warnanya, bisa ke &lt;span style="color: blue;"&gt;File -&amp;gt; Setting -&amp;gt; Editor -&amp;gt; Color Scheme -&amp;gt; Android Logcat&lt;/span&gt;. berikut merupakan contoh &lt;i&gt;color scheme&lt;/i&gt;, jangan lupa hilangkan centang pada Inherit values from: jika ingin mengganti warna pada pesan log.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSj5_uPvFwcnLJUhfp8KZPPgXrOvTMN-5aoapLuW3Os6u6PpMTN9DIIC-zpBsJaRNR9ddDK2vY7S1Y0qRMOsDO6ED6Bnz_C5ZCTduKuq282avqKWVu43VqykNKhOMsYcZA2BSAsb0Gqnzq/s1600/android_log_cat_color_scheme.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSj5_uPvFwcnLJUhfp8KZPPgXrOvTMN-5aoapLuW3Os6u6PpMTN9DIIC-zpBsJaRNR9ddDK2vY7S1Y0qRMOsDO6ED6Bnz_C5ZCTduKuq282avqKWVu43VqykNKhOMsYcZA2BSAsb0Gqnzq/s640/android_log_cat_color_scheme.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
berikut merupakan kode warna yang digunakan seperti color scheme diatas.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #b87bd5;"&gt;&lt;b&gt;Log Assert&lt;/b&gt;&lt;/span&gt; : #B87BD5&lt;br /&gt;
&lt;span style="color: #54c1e9;"&gt;&lt;b&gt;Log Debug&lt;/b&gt;&lt;/span&gt; : #54C1E9&lt;br /&gt;
&lt;span style="color: #f95c5a;"&gt;&lt;b&gt;Log Error&lt;/b&gt;&lt;/span&gt; : #F95C5A&lt;br /&gt;
&lt;span style="color: #759769;"&gt;&lt;b&gt;Log Info&lt;/b&gt;&lt;/span&gt; : #759769&lt;br /&gt;
&lt;b&gt;Log Verbose&lt;/b&gt; : #EEEFFF&lt;br /&gt;
&lt;span style="color: #fac848;"&gt;&lt;b&gt;Log Warning&lt;/b&gt;&lt;/span&gt; : #FAC848&lt;br /&gt;
&lt;br /&gt;
jika ingin lebih spesifik menampilkan pesan lognya, bisa menggunakan kotlin extension. pertama buat constant untuk tag log nya.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM2bNH7qrRwvW8vYKjJgukLTJ7BjiuvOIMtzD8QygGXPFJf3Id8J3kLInM6wacbzfCy5tvWX9Xch9pUVx9sup0kDZGVRm5lEhFhk-_wRcvar4hGRlzkpmTcIECOTNS3J_jAph0hkOr4mrG/s1600/android_log_cat_constant.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="100" data-original-width="343" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM2bNH7qrRwvW8vYKjJgukLTJ7BjiuvOIMtzD8QygGXPFJf3Id8J3kLInM6wacbzfCy5tvWX9Xch9pUVx9sup0kDZGVRm5lEhFhk-_wRcvar4hGRlzkpmTcIECOTNS3J_jAph0hkOr4mrG/s1600/android_log_cat_constant.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lanjut ke pembuatan kotlin extension.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb3gayetgF1hBYc7IIsEf7Rw0mzXkRQuFImAJ4TwOjLGSCZP7L_hY9J2PvRz0QGdpLhWo2xJ2qx89cO6rKdF8b8ICDzTtGGlAdzg5ifEw2KGBFJAe6LrT36shQZ9t9WIfSy7G0xDvKh3mB/s1600/android_log_cat_kotlin_extension.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="177" data-original-width="544" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb3gayetgF1hBYc7IIsEf7Rw0mzXkRQuFImAJ4TwOjLGSCZP7L_hY9J2PvRz0QGdpLhWo2xJ2qx89cO6rKdF8b8ICDzTtGGlAdzg5ifEw2KGBFJAe6LrT36shQZ9t9WIfSy7G0xDvKh3mB/s1600/android_log_cat_kotlin_extension.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
dan sekarang tinggal panggil kotlin extensionnya untuk me-log sesuatu. tinggal dikasih filter sesuai dengan tag.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqeDOu42njUGqFwZ9kl1_8oqBz89JNWCHPX4ZDV3DtwFet5BYRQG_tj1f9lwoV66070ziDzPP0cAjlwy7nDA69bGFdRGScrbbEo7IRLGan80iE4bFOUesP27uDfhNxE2opVyuJeBKVX6W/s1600/android_log_cat_filter.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqeDOu42njUGqFwZ9kl1_8oqBz89JNWCHPX4ZDV3DtwFet5BYRQG_tj1f9lwoV66070ziDzPP0cAjlwy7nDA69bGFdRGScrbbEo7IRLGan80iE4bFOUesP27uDfhNxE2opVyuJeBKVX6W/s640/android_log_cat_filter.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;2. Android Profiler&lt;/b&gt;&lt;br /&gt;
Tools yang ini digunakan untuk melihat kebutuhan resources pada aplikasi android.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiHyUQI85Qp8dTzkU_l1RNOw2KTR6C-NOYrqFOg3eEn7azgorBrEuNMcBwfWQfWFhEhDdyCBJYLNkDxSZzndNkxw4HZMXF8TgbmFDo0ypDYO-g9SWE3vAIJSw7RzbYd5BKBDIblChuE-6o/s1600/android_debugging_profiler.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiHyUQI85Qp8dTzkU_l1RNOw2KTR6C-NOYrqFOg3eEn7azgorBrEuNMcBwfWQfWFhEhDdyCBJYLNkDxSZzndNkxw4HZMXF8TgbmFDo0ypDYO-g9SWE3vAIJSw7RzbYd5BKBDIblChuE-6o/s640/android_debugging_profiler.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
bisa dilihat diatas, menampilkan data CPU, Memory, Network dan Energy. jadi misal kalau aplikasinya lemot bisa di cek langsung disini. apakah pemakaian RAM nya melonjak atau penggunaan CPUnya tinggi.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Developer Options, Show Layout Bounds&lt;/b&gt;&lt;br /&gt;
Kalau ini harus di setting dari Devicenya langsung melalui menu Developer Options.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Id8KF1vgz7isP_h7YM-SOw05HdPaMvLPJSGTtvO2N1KnqbU6G5iBD3mkzeUyKEurpuKQU5yCFEs4cbOhVqbVcnYhUm1h9C3qrrWUNBoeCuRcVkbP2F35W34G7WpONJKym5vnCC9kXv4G/s1600/android_debugging_layout_bounds.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="67" data-original-width="318" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Id8KF1vgz7isP_h7YM-SOw05HdPaMvLPJSGTtvO2N1KnqbU6G5iBD3mkzeUyKEurpuKQU5yCFEs4cbOhVqbVcnYhUm1h9C3qrrWUNBoeCuRcVkbP2F35W34G7WpONJKym5vnCC9kXv4G/s1600/android_debugging_layout_bounds.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;jika menu ini diaktifkan maka pada device akan menampilkan garis-garis untuk tanda margin, padding dan lain-lain. jadi langsung bisa di cek pengaturan margin, padding. seperti screenshot dibawah ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGDQGe8A8hS0vyOO0InUX7cFM4cbKpekT67PYxS61vFYyFwhaBmDyZtxSgd6kVqQawdDz-hj-Abnj_sDlL4AcbfkTFVTabf2ZFhYKVpG5CCYRLRusvTeBCwqxaR-RSrC407muCa823LG3Z/s1600/Screenshot_1569837053.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="900" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGDQGe8A8hS0vyOO0InUX7cFM4cbKpekT67PYxS61vFYyFwhaBmDyZtxSgd6kVqQawdDz-hj-Abnj_sDlL4AcbfkTFVTabf2ZFhYKVpG5CCYRLRusvTeBCwqxaR-RSrC407muCa823LG3Z/s400/Screenshot_1569837053.png" width="225" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;4. Developer Options, Debug GPU Overdraw&lt;/b&gt; &lt;br /&gt;
ini juga masih di menu developer options. yang ini digunakan untuk memeriksa issue overdraw.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTNqn5BhVsH80uwWMrnd3it_3nHnXKtBNnM_NhlF9Pt0K6gc3NDt0YHmMO_ao3J6D6_-QPveMAcqlFS9img5c_Il7gWllyukxpoZZ_H1oeF1C8Q_owLRgxFGG67Zf5-fV9hGvfs5PBJogM/s1600/android_debugging_gpu_overdraw.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="221" data-original-width="330" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTNqn5BhVsH80uwWMrnd3it_3nHnXKtBNnM_NhlF9Pt0K6gc3NDt0YHmMO_ao3J6D6_-QPveMAcqlFS9img5c_Il7gWllyukxpoZZ_H1oeF1C8Q_owLRgxFGG67Zf5-fV9hGvfs5PBJogM/s320/android_debugging_gpu_overdraw.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
jika diaktifkan yang &lt;i&gt;Show overdraw areas&lt;/i&gt; misalkan. maka aplikasi akan seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBW3UHgBCg1cCFef9gYzsZhmrGzqJx1mOEHTxizA1S8WI19fOUhV50B7zWb5k1_pi5BBcoIMQJdlHpQZ_jtD8m2wbKyu-dB3yHn7pRzEhLiGBTeWiglvX9Ovabw0zTpPw1AMV-pRJex4IR/s1600/Screenshot_1569838424.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="900" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBW3UHgBCg1cCFef9gYzsZhmrGzqJx1mOEHTxizA1S8WI19fOUhV50B7zWb5k1_pi5BBcoIMQJdlHpQZ_jtD8m2wbKyu-dB3yHn7pRzEhLiGBTeWiglvX9Ovabw0zTpPw1AMV-pRJex4IR/s400/Screenshot_1569838424.png" width="225" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
bisa dilihat diatas ada daerah yang berwarna hijau dan merah. itu merupakan area-area yang di cek melalui menu ini. untuk lebih lengkapnya tentang overdraw ini bisa &lt;a href="https://developer.android.com/studio/profile/inspect-gpu-rendering" target="_blank"&gt;klik link berikut&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5. ADB Idea (Android Studio Plugin)&lt;/b&gt; &lt;br /&gt;
Kalau &lt;a href="https://plugins.jetbrains.com/plugin/7380-adb-idea" target="_blank"&gt;ADB Idea&lt;/a&gt; ini merupakan plugin Android Studio. jika diinstall maka akan tampil di &lt;span style="color: blue;"&gt;Tools -&amp;gt; ADB Idea -&amp;gt; menu ADB Ideanya&lt;/span&gt;. tools ini digunakan untuk clear data, uninstall, restart dan lain-lain. kalau mengakses dari menu setting di device kan repot, jadi bisa langsung lewat plugin ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVNqI7VwjyyJxcoX4uZfeEaDRLB1qFRrzJjfu_ZDHQoAbTHf7XJE-i0vWUJUgKHlLxraLr08Z0yCfyllNO9UOQ0oMunB26B0VorfiiEd1XuuW5MAU3XE_ph2hTNByd_76iNehrGfc5-1Fp/s1600/android_debugging_adb_idea.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="349" data-original-width="696" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVNqI7VwjyyJxcoX4uZfeEaDRLB1qFRrzJjfu_ZDHQoAbTHf7XJE-i0vWUJUgKHlLxraLr08Z0yCfyllNO9UOQ0oMunB26B0VorfiiEd1XuuW5MAU3XE_ph2hTNByd_76iNehrGfc5-1Fp/s640/android_debugging_adb_idea.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;6. Dexcount Gradle Plugin&lt;/b&gt;&lt;br /&gt;
Kalau plugin yang ini digunakan untuk melihat jumlah method, field dan class yang ada pada aplikasi android. tentu jika sudah melebihi batas maka akan menjadi &lt;a href="https://developer.android.com/studio/build/multidex" target="_blank"&gt;multidex&lt;/a&gt;. tentang bagaimana cara pakainya langsung saja ke &lt;a href="https://github.com/KeepSafe/dexcount-gradle-plugin" target="_blank"&gt;repository githubnya&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6FV9KxDhw8pFV_Nr2fcfo77z3sR0iKR8QP22OZGmDsHK3hyphenhyphenV8zQT9dBrxwIvPVF0X5Kn8Y5-UVWpL1P1sHIlEPp9gjWpOmaVmRCQtiF9GDHbuZS3AHfTUvp1Pw95U-CpR79OSo_N4keCf/s1600/android_dex_count_gradle_plugin.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="407" data-original-width="777" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6FV9KxDhw8pFV_Nr2fcfo77z3sR0iKR8QP22OZGmDsHK3hyphenhyphenV8zQT9dBrxwIvPVF0X5Kn8Y5-UVWpL1P1sHIlEPp9gjWpOmaVmRCQtiF9GDHbuZS3AHfTUvp1Pw95U-CpR79OSo_N4keCf/s640/android_dex_count_gradle_plugin.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Daftar diatas merupakan hal-hal yang bisa dioptimalkan pada saat debugging Android, dan tentu saja bisa menambahkan tools-tools baru jika diperlukan kedepannya.&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvAbdTbtQukzyyrI7BWUscXR2AylGERwmECVupCviDszQkD0htLCYF-kOE0QJiu2ViMrSslp87ko-nKnvdqoqWzxarUkGr73NM1FzY90E5Vw5hBbn1H63ksTZY2r34z1pRtA0_feaZwjcf/s72-c/android_log_cat.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Networking MVVM dengan Kotlin Coroutines</title><link>http://yoesuv.blogspot.com/2019/09/android-networking-mvvm-dengan-kotlin.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 18 Sep 2019 16:17:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-1504908437299528185</guid><description>Setelah sebelumnya membuat aplikasi &lt;a href="https://yoesuv.blogspot.com/2019/01/memulai-android-mvvm-dengan-android.html" target="_blank"&gt;android MVVM&lt;/a&gt; networking dengan &lt;a href="https://yoesuv.blogspot.com/2019/01/android-kotlin-mvvm-networking-dengan.html" target="_blank"&gt;Rx Java dan Rx Android&lt;/a&gt;. maka kali ini akan ganti dengan Kotlin Coroutines. &lt;br /&gt;
&lt;br /&gt;
setelah membuat project android baru, aktifkan data binding. kemudian tambahkan library seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihhxycod4tyBBDnjpKeoSQglDOaNXH5hDjVbU1tU1ERwkI2QANfZpcVZDtpRyO8ZprRo57OgD0Ysdq34fJdLDodiv-UinTzldhdKHSJs4kUDDlVTiOYdGpDCJFfyB8QAPoxYTt4JPy7FyR/s1600/android_coroutines_library.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="214" data-original-width="560" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihhxycod4tyBBDnjpKeoSQglDOaNXH5hDjVbU1tU1ERwkI2QANfZpcVZDtpRyO8ZprRo57OgD0Ysdq34fJdLDodiv-UinTzldhdKHSJs4kUDDlVTiOYdGpDCJFfyB8QAPoxYTt4JPy7FyR/s1600/android_coroutines_library.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
untuk sample API nya diambil dari &lt;a href="https://info-malang-batu.firebaseapp.com/List_place_malang_batu.json" target="_blank"&gt;link berikut ini&lt;/a&gt;.&amp;nbsp; sehingga class modelnya seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbl_Hhnh7R2DmMMK2s7_hJMX5lIalvUt1sDVFPcBBRCVUGh5Qn_4mSXPN-YuLICoQOs_QtIXv1ifsUSF_88M-c2p83cSEn0481s73P1i7HMtE0PHUeQ3s-NFp4afGkEJA_f7z_vN4vZaZ3/s1600/android_coroutines_model.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="229" data-original-width="558" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbl_Hhnh7R2DmMMK2s7_hJMX5lIalvUt1sDVFPcBBRCVUGh5Qn_4mSXPN-YuLICoQOs_QtIXv1ifsUSF_88M-c2p83cSEn0481s73P1i7HMtE0PHUeQ3s-NFp4afGkEJA_f7z_vN4vZaZ3/s1600/android_coroutines_model.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lanjut untuk class networkingnya bisa di cek langsung &lt;a href="https://github.com/yoesuv-blog/Android-MVVM-Coroutines-Networking/tree/master/app/src/main/java/com/yoesuv/mycoroutinesnetworking/networks" target="_blank"&gt;kesini&lt;/a&gt;. setelah class-class untuk networking siap. bisa lanjut ke viewmodel. perhatikan fungsi &lt;i&gt;getListPlace()&lt;/i&gt; terdapat &lt;i&gt;viewModelScope.launch&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/ccf74eca221356b28568c47501814c34.js"&gt;&lt;/script&gt;
hasil dari prosesnya dimasukkan variable &lt;span style="color: blue;"&gt;liveDataListPlace&lt;/span&gt;. terus tinggal di observe di &lt;a href="https://github.com/yoesuv-blog/Android-MVVM-Coroutines-Networking/blob/master/app/src/main/java/com/yoesuv/mycoroutinesnetworking/menu/views/MainActivity.kt" target="_blank"&gt;MainActivity&lt;/a&gt;. untuk ditampilkan ke recyclerview melalui adapter.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjksdb2XUyHrVKy148ubGj4eoCwb4krI2TTD4gpqDhxD1h9fyR4tFW6uYeD-LTUBXnXXFOmboCv4K2PT0BckhF6113mGKinSogcyM6iUPYxV6LT8UfcVKGJH1rpvBtrrOWdfYWmQzGo0hOP/s1600/Screenshot_20190918-152402.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1440" data-original-width="720" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjksdb2XUyHrVKy148ubGj4eoCwb4krI2TTD4gpqDhxD1h9fyR4tFW6uYeD-LTUBXnXXFOmboCv4K2PT0BckhF6113mGKinSogcyM6iUPYxV6LT8UfcVKGJH1rpvBtrrOWdfYWmQzGo0hOP/s400/Screenshot_20190918-152402.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
untuk lebih lengkapnya bisa cek repository githubnya &lt;a href="https://github.com/yoesuv-blog/Android-MVVM-Coroutines-Networking" target="_blank"&gt;disini&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
selamat mencoba. </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihhxycod4tyBBDnjpKeoSQglDOaNXH5hDjVbU1tU1ERwkI2QANfZpcVZDtpRyO8ZprRo57OgD0Ysdq34fJdLDodiv-UinTzldhdKHSJs4kUDDlVTiOYdGpDCJFfyB8QAPoxYTt4JPy7FyR/s72-c/android_coroutines_library.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="12006" type="application/json" url="https://info-malang-batu.firebaseapp.com/List_place_malang_batu.json"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>Setelah sebelumnya membuat aplikasi android MVVM networking dengan Rx Java dan Rx Android. maka kali ini akan ganti dengan Kotlin Coroutines. setelah membuat project android baru, aktifkan data binding. kemudian tambahkan library seperti berikut. untuk sample API nya diambil dari link berikut ini.&amp;nbsp; sehingga class modelnya seperti berikut. lanjut untuk class networkingnya bisa di cek langsung kesini. setelah class-class untuk networking siap. bisa lanjut ke viewmodel. perhatikan fungsi getListPlace() terdapat viewModelScope.launch hasil dari prosesnya dimasukkan variable liveDataListPlace. terus tinggal di observe di MainActivity. untuk ditampilkan ke recyclerview melalui adapter. untuk lebih lengkapnya bisa cek repository githubnya disini. selamat mencoba.</itunes:subtitle><itunes:author>noreply@blogger.com (Unknown)</itunes:author><itunes:summary>Setelah sebelumnya membuat aplikasi android MVVM networking dengan Rx Java dan Rx Android. maka kali ini akan ganti dengan Kotlin Coroutines. setelah membuat project android baru, aktifkan data binding. kemudian tambahkan library seperti berikut. untuk sample API nya diambil dari link berikut ini.&amp;nbsp; sehingga class modelnya seperti berikut. lanjut untuk class networkingnya bisa di cek langsung kesini. setelah class-class untuk networking siap. bisa lanjut ke viewmodel. perhatikan fungsi getListPlace() terdapat viewModelScope.launch hasil dari prosesnya dimasukkan variable liveDataListPlace. terus tinggal di observe di MainActivity. untuk ditampilkan ke recyclerview melalui adapter. untuk lebih lengkapnya bisa cek repository githubnya disini. selamat mencoba.</itunes:summary><itunes:keywords>Android</itunes:keywords></item><item><title>Android Heterogeneous RecyclerView</title><link>http://yoesuv.blogspot.com/2019/09/android-heterogeneous-recyclerview.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 16 Sep 2019 09:57:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-8542905647250940024</guid><description>Ada saatnya item recyclerview pada Android menampilkan bermacam-macam&amp;nbsp; type layout tergantung tipe datanya seperti apa. istilahnya item layout pada recyclerview bisa bermacam-macam. misalnya seperti gambar berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA0lE6vIhZSora1vJJJud7yhVBovASN9igY6Qwrk1JEMK7UDUJJGWRpwAqBF4NmwaJMoSSskjoQCNytaQeOnmwL0CFtJzvMEEav6CttrM_bgFTcB4o_mw88D4ol8vVaX2OWmBGUckZeZfP/s1600/android_heterogeneous_recyclerview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="864" data-original-width="896" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA0lE6vIhZSora1vJJJud7yhVBovASN9igY6Qwrk1JEMK7UDUJJGWRpwAqBF4NmwaJMoSSskjoQCNytaQeOnmwL0CFtJzvMEEav6CttrM_bgFTcB4o_mw88D4ol8vVaX2OWmBGUckZeZfP/s640/android_heterogeneous_recyclerview.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
bisa dilihat diatas item pada recyclerview ada dua macam. satu dengan gambar dan yang satu cuma text saja. apakah item layoutnya satu jadi terus pakai &lt;span style="color: blue;"&gt;if&lt;/span&gt;? tentu tidak, jawabannya adalah memakai dua view holder pada adapternya.&lt;br /&gt;
&lt;br /&gt;
sebelumnya siapkan dulu project android baru dengan &lt;a href="https://yoesuv.blogspot.com/2019/01/memulai-android-mvvm-dengan-android.html" target="_blank"&gt;data binding (MVVM)&lt;/a&gt;. langsung saja ke view modelnya disini untuk list datanya disini pakai dua model. ImageModel dan TextModel.&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/5b6eb27b3e48f8c8ad27222d5a18f2f8.js"&gt;&lt;/script&gt; variable live data listHeterogeneous akan di observe di &lt;a href="https://github.com/yoesuv-blog/Android-Heterogeneous-RecyclerView/blob/master/app/src/main/java/com/yoesuv/myheterogeneous/views/MainActivity.kt" target="_blank"&gt;activity&lt;/a&gt;.&lt;br /&gt;
setelah model dan viewmodel siap silahkan buat dua layout untuk item image dan item text &lt;br /&gt;
seperti gambar diatas layout yang satu &lt;a href="https://github.com/yoesuv-blog/Android-Heterogeneous-RecyclerView/blob/master/app/src/main/res/layout/item_image.xml" target="_blank"&gt;ada gambarnya&lt;/a&gt; dan yang satu cuma &lt;a href="https://github.com/yoesuv-blog/Android-Heterogeneous-RecyclerView/blob/master/app/src/main/res/layout/item_text.xml" target="_blank"&gt;text saja&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
sekarang bagian terpenting pada Adapternya. mulai dari bagian atas dahulu buat constant untuk masing-masing tipe item dan juga &lt;i&gt;diff callback&lt;/i&gt; untuk masing-masing model. untuk menentukan typenya &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;i&gt;getItemViewType&lt;/i&gt;. selanjutnya tinggal di &lt;span style="color: blue;"&gt;if&lt;/span&gt; di &lt;i&gt;onCreateViewHolder&lt;/i&gt; berdasarkan view holder masing-masing (disini pakai dua view holder)&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/0417f01e45818ada126a3b3c0457c2ee.js"&gt;&lt;/script&gt;
jadi intinya adalah memakai dua viewholder pada adapter jika ingin menampilkan item yang berbeda-beda. atau nantinya bisa dikembangkan lebih dari dua view holder.
&lt;br /&gt;&lt;/br&gt;
check repository githubnya &lt;a href="https://github.com/yoesuv-blog/Android-Heterogeneous-RecyclerView" target="_blank"&gt;disini&lt;/a&gt;.&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA0lE6vIhZSora1vJJJud7yhVBovASN9igY6Qwrk1JEMK7UDUJJGWRpwAqBF4NmwaJMoSSskjoQCNytaQeOnmwL0CFtJzvMEEav6CttrM_bgFTcB4o_mw88D4ol8vVaX2OWmBGUckZeZfP/s72-c/android_heterogeneous_recyclerview.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Navigation Library - Advanced</title><link>http://yoesuv.blogspot.com/2019/07/android-navigation-library-advanced.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 1 Jul 2019 13:50:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-2270062012626524182</guid><description>Pada post ini merupakan lanjutan dari post sebelumnya tentang &lt;a href="https://yoesuv.blogspot.com/2019/06/android-navigation-library-basic.html" target="_blank"&gt;navigation basic&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
jadi yang ini merupakan versi advanced dari yang sebelumnya, dimana bentuk aplikasinya lumayan kompleks. contohnya seperti berikut ini, halaman utama terdapat tiga fragment dengan bottom navigation view. dan ada detail untuk masing-masing menu (misal ada list notifikasi dengan detail notifikasi). lebih lengkapnya navigasinya seperti berikut. atau bisa dilihat di &lt;a href="https://github.com/yoesuv-blog/Android-Navigation-Advanced/blob/master/README.MD" target="_blank"&gt;github readme&lt;/a&gt; repo post ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Eqq7fGRCogek_pf6HG1SukVk6j4VY7EqAWl6k2Rr52YKYqF2_uZtkMvZZjiz5iZlQCdXMdFbZvqE7RRw9Vsfetm821iGJmPgkYn8yaoW0mSbhQai3STI-uB0jQtOofOym4bZeurXTCHm/w1187-h641-no/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="641" data-original-width="1187" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Eqq7fGRCogek_pf6HG1SukVk6j4VY7EqAWl6k2Rr52YKYqF2_uZtkMvZZjiz5iZlQCdXMdFbZvqE7RRw9Vsfetm821iGJmPgkYn8yaoW0mSbhQai3STI-uB0jQtOofOym4bZeurXTCHm/w1187-h641-no/" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
pastikan memahami tentang navigation basic dahulu. karena disini juga terdapat contoh arguments jika mengirim data antar fragment dengan parcelable.&lt;br /&gt;
&lt;br /&gt;
yang perlu diperhatikan disini adalah penamaan id pada xml menu dan xml navigation graph harus sama untuk menu bottom navigation view. misal berikut contoh menu.xml&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/fbf564656612a20eb288ebca93bc5217.js"&gt;&lt;/script&gt;
&lt;br /&gt; dan berikut contoh navigation.xml&lt;script src="https://gist.github.com/yoesuv-blog/e8cd1122f84ce42eb750aac353b62557.js"&gt;&lt;/script&gt;
&lt;br /&gt;
mohon maaf jika tidak menulis secara lengkap untuk post kali ini.&lt;br /&gt;
&lt;br /&gt;
langsung cek repository githubnya &lt;a href="https://github.com/yoesuv-blog/Android-Navigation-Advanced" target="_blank"&gt;disini&lt;/a&gt;.&lt;br /&gt;
selamat mencoba. </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Eqq7fGRCogek_pf6HG1SukVk6j4VY7EqAWl6k2Rr52YKYqF2_uZtkMvZZjiz5iZlQCdXMdFbZvqE7RRw9Vsfetm821iGJmPgkYn8yaoW0mSbhQai3STI-uB0jQtOofOym4bZeurXTCHm/s72-w1187-h641-c-no/" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Navigation Library - Basic</title><link>http://yoesuv.blogspot.com/2019/06/android-navigation-library-basic.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 26 Jun 2019 13:25:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-7220056100073315610</guid><description>Salah satu library yang terbaru dari &lt;a href="https://developer.android.com/jetpack/" target="_blank"&gt;Android Jetpack&lt;/a&gt; adalah &lt;a href="https://developer.android.com/guide/navigation" target="_blank"&gt;Navigation Library&lt;/a&gt;.&amp;nbsp; library ini mempermudah dalam mengembangkan aplikasi dengan model single activity.&lt;br /&gt;
&lt;br /&gt;
untuk contoh dasarnya seperti berikut. pada fragment pertama jika di klik menuju ke fragment kedua. contoh apknya download &lt;a href="https://drive.google.com/file/d/1xxK0paWXaBmMAvXKvBI6CEwfYpzHQZhx/view?usp=sharing" target="_blank"&gt;disini&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcsztygEWs2TWxJTTCXY87QcjTmPMSZhI-FpMesYSbwFcIdK6uFUoiVC6SX4B7H1MLBW2npMJkQvR3alKY4DzSbtHb_bJ-mQ7t_T2eXFGGJDXXoXAHTgnEw6QrOIxIB0MtYXyG01qSHj_q/s1600/android_navigation_basic_app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="527" data-original-width="600" height="351" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcsztygEWs2TWxJTTCXY87QcjTmPMSZhI-FpMesYSbwFcIdK6uFUoiVC6SX4B7H1MLBW2npMJkQvR3alKY4DzSbtHb_bJ-mQ7t_T2eXFGGJDXXoXAHTgnEw6QrOIxIB0MtYXyG01qSHj_q/s400/android_navigation_basic_app.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
dan contoh navigation graphnya nanti akan seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZaPEBVNRCAt6ovdmz_bvbG-vnzoKDEi-lTxJSiItrqkrIEkI9mQE_CNR9mgwsvT5U9BxpIT4_7Q8aa1tHbMrbGKSRViowAbH_c9-bhrEOJQPLGkY0kpEY14CArcpocPwTGE71K04vKzVE/s1600/android_navigation_graph_example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="462" data-original-width="665" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZaPEBVNRCAt6ovdmz_bvbG-vnzoKDEi-lTxJSiItrqkrIEkI9mQE_CNR9mgwsvT5U9BxpIT4_7Q8aa1tHbMrbGKSRViowAbH_c9-bhrEOJQPLGkY0kpEY14CArcpocPwTGE71K04vKzVE/s400/android_navigation_graph_example.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
langsung ke pembuatannya. silahkan buat project android baru.&amp;nbsp; dan langsung tambahkan resource untuk navigation. caranya klik kanan pada res -&amp;gt; new -&amp;gt; Android Resource File. jangan lupa ganti Resource type nya ke Navigation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7gOfe7IZfBtFxV7a_0hfdHVc3GnN-VqpWw9LOVyLEyxrwZ5SsF1l0r_uy1ztmkEpdPd_yJP1koMjhGwd31AZD2Ranjb_zOg-vjq1lWAE60QEZCVfXeLewIOFMAo4TBnUQOP0myhdHt52u/s1600/android_studio_create_new_navigation_graph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="477" data-original-width="818" height="335" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7gOfe7IZfBtFxV7a_0hfdHVc3GnN-VqpWw9LOVyLEyxrwZ5SsF1l0r_uy1ztmkEpdPd_yJP1koMjhGwd31AZD2Ranjb_zOg-vjq1lWAE60QEZCVfXeLewIOFMAo4TBnUQOP0myhdHt52u/s640/android_studio_create_new_navigation_graph.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
maka otomatis android studio akan membuat folder resources untuk navigation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje0L-St5ghLiARFame7FS0yFrCHL3qTBMkvKQvpfIw7HVcKKBg1XyPHnRr4rXjnzoHBXweCWK5_mPUmDb_be8DVDykXkqEUCX6_Kk5L-j61rZK_BVELIFNk-60NtWX-3ZOCoQLRzEnrEEj/s1600/android_studio_reource_navigation_folder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="127" data-original-width="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje0L-St5ghLiARFame7FS0yFrCHL3qTBMkvKQvpfIw7HVcKKBg1XyPHnRr4rXjnzoHBXweCWK5_mPUmDb_be8DVDykXkqEUCX6_Kk5L-j61rZK_BVELIFNk-60NtWX-3ZOCoQLRzEnrEEj/s1600/android_studio_reource_navigation_folder.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
dan juga menambahkan library untuk navigation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDOwTYk7ez_eXMc3AqpITJVXC-GwSI8f9IYsP7gg7p8EIBmifcS05sTVOrDiT3sfz3G4UtaQkAb1q1cTshhIsW1uVjGVHH5bxMWIqjtMDrGqNtT9zGPFJQdtJUfMupI3vvrfOtZOouvaDr/s1600/app_gradle_navigation_library.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="42" data-original-width="479" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDOwTYk7ez_eXMc3AqpITJVXC-GwSI8f9IYsP7gg7p8EIBmifcS05sTVOrDiT3sfz3G4UtaQkAb1q1cTshhIsW1uVjGVHH5bxMWIqjtMDrGqNtT9zGPFJQdtJUfMupI3vvrfOtZOouvaDr/s1600/app_gradle_navigation_library.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
langkah pertama selesai. sekarang lanjut ke main activity. Main Activity ini akan bertindak sebagai host untuk dua fragment (lihat contoh gambar paling atas pada post ini). rubah xmlnya seperti berikut.&lt;br /&gt;
perhatikan pada bagian tag &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;fragment&lt;/span&gt;. dan juga karena menggunakan toolbar sendiri maka ganti tema di file styles.xml ubah parentnya menjadi &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;Theme.AppCompat.Light.NoActionBar&lt;/span&gt;.
&lt;script src="https://gist.github.com/yoesuv-blog/e262530ab6039d19bd54c748ef5b7c45.js"&gt;&lt;/script&gt;
&lt;br /&gt;
sedangkan untuk class nya seperti berikut. ada function &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;setupNavigation()&lt;/span&gt; karena menggunakan toolbar sendiri. kemudian juga perlu mengatur Navigation, agar toolbar terdapat tanda back.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/bd8eb2ca2467e4ddb7fc53e55bf28487.js"&gt;&lt;/script&gt;&lt;br /&gt;
Sekarang lanjut ke fragment pertama. buat layout xml standar dengan sebuah button untuk menuju fragment kedua.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/42fa100c501de8f242e1f38a7ea3d6c2.js"&gt;&lt;/script&gt;&lt;br /&gt;
sedangkan untuk class fragment pertama seperti berikut. bisa dilewati dulu untuk action button clicknya karena belum membuat navigation action.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/6c09c7496e485ed2b416adc3eee296f8.js"&gt;&lt;/script&gt;

untuk fragment kedua juga sama. tinggal ganti saja id dan stringnya.
&lt;script src="https://gist.github.com/yoesuv-blog/e65009eeb2ef67e07d3db9de54b04e39.js"&gt;&lt;/script&gt;
&lt;br /&gt;
untuk class fragment kedua lebih mudah. karena hanya button mengatur action back saja.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/a916303d14b48ce55f39e4d11f8a69db.js"&gt;&lt;/script&gt;&lt;br /&gt;
oke semuanya siap, sekarang bagian paling penting yaitu mengatur navigationnya melalui xml. perhatikan pada fragment pertama, terdapat action dengan id dan destination. id action inilah yang akan dipanggil pada button click fragment pertama.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/902beb3af03a5887dcd97e11230a3ea2.js"&gt;&lt;/script&gt;
&lt;br/&gt;sekarang tinggal dijalankan. jika benar maka aplikasi akan seperti contoh apk aplikasi di atas. dengan model single activity.&lt;br/&gt;&lt;br/&gt; 
Selamat Mencoba.&lt;br /&gt;
Lihat repository githubnya &lt;a href="https://github.com/yoesuv-blog/Android-Navigation-Example" target="_blank"&gt;disini&lt;/a&gt;. </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcsztygEWs2TWxJTTCXY87QcjTmPMSZhI-FpMesYSbwFcIdK6uFUoiVC6SX4B7H1MLBW2npMJkQvR3alKY4DzSbtHb_bJ-mQ7t_T2eXFGGJDXXoXAHTgnEw6QrOIxIB0MtYXyG01qSHj_q/s72-c/android_navigation_basic_app.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Development - Migrasi ke AndroidX</title><link>http://yoesuv.blogspot.com/2019/06/android-development-migrasi-ke-androidx.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 24 Jun 2019 10:11:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-424764692483704686</guid><description>Sejak android SDK 29 rilis. maka dalam setiap pembuatan project android baru wajib memakai &lt;a href="https://developer.android.com/jetpack/androidx/" target="_blank"&gt;AndroidX&lt;/a&gt;. dan android support library terakhir yang didukung hanya sampai versi 28.0.0, jika ingin mengupdate maka wajib migrasi ke AndroidX.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgplgOxQF3TENcRpzK6oKKPB-kQJsgZxYR88y46UVFcuwMlFig_3H5YSMtRweYp166ZaiXTgX3N_i45qAdnjSXiG5bEKcUR0Kxifnqu03X2TP1fDYlse2oQBcyca480gVmpG-iQ8TOZiWXJ/s1600/android_studio_android_x.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="149" data-original-width="655" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgplgOxQF3TENcRpzK6oKKPB-kQJsgZxYR88y46UVFcuwMlFig_3H5YSMtRweYp166ZaiXTgX3N_i45qAdnjSXiG5bEKcUR0Kxifnqu03X2TP1fDYlse2oQBcyca480gVmpG-iQ8TOZiWXJ/s640/android_studio_android_x.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
AndroidX ini mulai diperkenalkan pada SDK 28 (cmiiw). dan jika ingin mengupgrade project android ke AndroidX wajib mengupdate compile SDK minimal ke SDK 28. dan tambahkan baris baru di &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;gradle.properties&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizB5L_0z-TQJpS3WydY8qPbgSoRVbbIT-N9lHNDfTvu5u6YEQWs5k8aPxIPDlu7xa07a0_IojfM1CEFb08eF2bP6q2YMZzsdwMi5L_72H2H-tQ9yBr1Iq9GYbyxzJTWHMPlYrkLopjuKmQ/s1600/android_studio_android_x_gradle_properties.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="92" data-original-width="542" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizB5L_0z-TQJpS3WydY8qPbgSoRVbbIT-N9lHNDfTvu5u6YEQWs5k8aPxIPDlu7xa07a0_IojfM1CEFb08eF2bP6q2YMZzsdwMi5L_72H2H-tQ9yBr1Iq9GYbyxzJTWHMPlYrkLopjuKmQ/s1600/android_studio_android_x_gradle_properties.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
atau jika tidak mau repot bisa langsung ke menu Refactor -&amp;gt; Migrate to AndroidX&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl9XwsLH2y8nbM1lPH61MNq9QT2GlsiwBLqbM7Ga6wihf9my59-sqOXuKxKVjBsG6tjjgnSwsbnryVY-Q4Plr4BmgzcJG5BxlmAPeQ-hKrUHuNwhr6SkOcTJUWbcdll1yPKRFn_ar4Uaz2/s1600/android_studio_migrate_to_android_x.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="296" data-original-width="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl9XwsLH2y8nbM1lPH61MNq9QT2GlsiwBLqbM7Ga6wihf9my59-sqOXuKxKVjBsG6tjjgnSwsbnryVY-Q4Plr4BmgzcJG5BxlmAPeQ-hKrUHuNwhr6SkOcTJUWbcdll1yPKRFn_ar4Uaz2/s1600/android_studio_migrate_to_android_x.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
apa sih bedanya dengan yang dulu? misal satu saja yaitu untuk support library app compat. kalau di AndroidX.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;implementation androidx.appcompat:appcompat:1.0.2&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
kalau dulu kan seperti ini.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;implementation com.android.support:appcompat-v7:28.0.0&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
lebih lengkapnya ada &lt;a href="https://developer.android.com/reference/androidx/packages" target="_blank"&gt;disini&lt;/a&gt;. demikian penjelasan singkat untuk migrasi ke AndroidX. diharapkan kedepannya pasti akan terbiasa, haha..&lt;br /&gt;
&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgplgOxQF3TENcRpzK6oKKPB-kQJsgZxYR88y46UVFcuwMlFig_3H5YSMtRweYp166ZaiXTgX3N_i45qAdnjSXiG5bEKcUR0Kxifnqu03X2TP1fDYlse2oQBcyca480gVmpG-iQ8TOZiWXJ/s72-c/android_studio_android_x.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Menggabungkan Dua atau lebih proses dengan Rx Java</title><link>http://yoesuv.blogspot.com/2019/06/menggabungkan-dua-atau-lebih-proses.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 24 Jun 2019 09:13:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-9105526608481304753</guid><description>Seringkali dalam membuat aplikasi android terdapat dua atau lebih proses networking. nah, proses tersebut bisa digabung menjadi satu dengan operator pada Rx Java.&lt;br /&gt;
&lt;br /&gt;
misal contoh seperti dibawah ini. dalam satu activity ada dua proses networking untuk mendapatkan data list dan gallery.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgggJvjH3As8fqu4IzUjSu8EJkilIE4FdQ-0_Ko0g5zvvN73lmD23Wh0I_f7rpEQ6o_xN61oCxv_Q2gRYpKuPkMGtg1Tz1E1x_r5hK3-1NdImxIzbyMPyLeprtUOYP0Adzr2GHhyJRlIshz/s1600/Screenshot_1561339705.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="900" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgggJvjH3As8fqu4IzUjSu8EJkilIE4FdQ-0_Ko0g5zvvN73lmD23Wh0I_f7rpEQ6o_xN61oCxv_Q2gRYpKuPkMGtg1Tz1E1x_r5hK3-1NdImxIzbyMPyLeprtUOYP0Adzr2GHhyJRlIshz/s400/Screenshot_1561339705.png" width="225" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
bagaimana cara menggabungkannya? yaitu bisa memakai operator flatMap dan concatMap. bedanya yaitu flatMap bersifat random dan concatMap kebalikannya yaitu berurutan. concatMap juga harus menunggu proses pertama selesai dahulu baru kemudian lanjut ke proses kedua.&lt;br /&gt;
&lt;br /&gt;
contoh request dua networking dengan flatMap. berikut ini merupakan contoh fungsi/methodnya saja.&lt;br /&gt;
perhatikan &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;appResponse.getListPlace()&lt;/span&gt; dan &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;appResponse.getListGallery()&lt;/span&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/ee6ef5643649b63f3a28c78772e3ea0c.js"&gt;&lt;/script&gt;
jika ingin mencoba concatMap tinggal ganti saja operatornya dengan concatMap. selebihnya syntaxnya juga sama.&lt;br /&gt;
&lt;br /&gt;
project ini menggunakan design pattern &lt;a href="https://yoesuv.blogspot.com/2019/01/android-kotlin-mvvm-networking-dengan.html" target="_blank"&gt;MVVM&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
cek repository githubnya &lt;a href="https://github.com/yoesuv-blog/Android-Reactive-Multiple-Request" target="_blank"&gt;disini&lt;/a&gt;. (cek branch develop dan develop2)&lt;br /&gt;
selamat mencoba</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgggJvjH3As8fqu4IzUjSu8EJkilIE4FdQ-0_Ko0g5zvvN73lmD23Wh0I_f7rpEQ6o_xN61oCxv_Q2gRYpKuPkMGtg1Tz1E1x_r5hK3-1NdImxIzbyMPyLeprtUOYP0Adzr2GHhyJRlIshz/s72-c/Screenshot_1561339705.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Testing dengan Espresso</title><link>http://yoesuv.blogspot.com/2019/02/android-testing-dengan-espresso.html</link><category>Android</category><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 27 Feb 2019 14:22:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-5602506780536952853</guid><description>Masuk ke pembahasan baru yaitu tentang testing aplikasi. bagaimana sih untuk nge-test sebuah aplikasi android? secara teori ada 3 jenis. lihat gambar dibawah ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhzV8KY_o9IFE8RJb5lUwy0PnuAoBZC1QugYRfzHdjJ-qcDhvg9NbUt58Ny6AknVLp9Mzd4MhjfwKqXVXqKhhPo4p3ZO-RQylAARQvqNpnrdsZE0_KIWFB-LcV3caxvXvg2NMRl5qsDjO/s1600/macam_android_testing.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="600" data-original-width="800" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhzV8KY_o9IFE8RJb5lUwy0PnuAoBZC1QugYRfzHdjJ-qcDhvg9NbUt58Ny6AknVLp9Mzd4MhjfwKqXVXqKhhPo4p3ZO-RQylAARQvqNpnrdsZE0_KIWFB-LcV3caxvXvg2NMRl5qsDjO/s320/macam_android_testing.jpeg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
dari 3 jenis test diatas, kali ini menggunakan &lt;a href="https://developer.android.com/training/testing/espresso" target="_blank"&gt;Espresso&lt;/a&gt; yang merupakan UI Test. jadi prosesnya adalah aplikasi berjalan sendiri untuk mencoba-coba UI test. sesuai dengan fitur yang dibuat.&lt;br /&gt;
&lt;br /&gt;
secara default pada saat membuat project android baru. sudah terdapat library untuk testingnya.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ4ZJgjflau-CzXAUo7YrIvz0u2SaKdAw0c8KN5IdV78aHwM1NqpgbLsEkJm5zp7sb0Rc8Qqd7gzVkMtlPDDdwKj52p2wZzzVfnYXL_K2446SWhfEDQBQFihczad6qcR1GoHKW2j0C6-xA/s1600/android_espresso_default.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="191" data-original-width="622" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ4ZJgjflau-CzXAUo7YrIvz0u2SaKdAw0c8KN5IdV78aHwM1NqpgbLsEkJm5zp7sb0Rc8Qqd7gzVkMtlPDDdwKj52p2wZzzVfnYXL_K2446SWhfEDQBQFihczad6qcR1GoHKW2j0C6-xA/s640/android_espresso_default.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
untuk kebutuhan project kali ini. perlu menambahkan test support library, seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRMplHtY7-ZBHuUxix1ya43NCtHygPoaFe3djLKNL3He2NwIl3NYHlEDqus3ZUTigmp_pmp7qooGaW97rBo9O5aL2YAHsXhfS10T-IstmLm92Qm93las9vIRoEu__7H57_fi24GmwBvHaX/s1600/android_espresso_test_support_library.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="79" data-original-width="629" height="60" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRMplHtY7-ZBHuUxix1ya43NCtHygPoaFe3djLKNL3He2NwIl3NYHlEDqus3ZUTigmp_pmp7qooGaW97rBo9O5aL2YAHsXhfS10T-IstmLm92Qm93las9vIRoEu__7H57_fi24GmwBvHaX/s640/android_espresso_test_support_library.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang misalkan aplikasi androidnya sudah jadi. ada fitur login, list dan detail seperti berikut. akan dibuatkan test class nya.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJtSMlGJ9zV_Mt7iJQMYY9n-DEVVpGDzrksiyzbVwchzq7G3GERL4eWM6yKyEiFGGvx8wD5sQxMMf0y9aW_u-Zhgak3erByrtRpsVklMyhGJwSzGE255J4MD9-dIyNu5QTV4ZK5JGZteFj/s1600/android_espresso_test_sample_app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="526" data-original-width="918" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJtSMlGJ9zV_Mt7iJQMYY9n-DEVVpGDzrksiyzbVwchzq7G3GERL4eWM6yKyEiFGGvx8wD5sQxMMf0y9aW_u-Zhgak3erByrtRpsVklMyhGJwSzGE255J4MD9-dIyNu5QTV4ZK5JGZteFj/s640/android_espresso_test_sample_app.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
yang perlu disiapkan yaitu mematikan animasi pada android device. ini disarankan jika untuk test secara cepat.&lt;br /&gt;
&lt;br /&gt;
langsung saja ke class testnya. langsung versi komplet ya, haha..&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/043a1910fe749ab19f26ca4c5d3545f0.js"&gt;&lt;/script&gt;

bisa dilihat di test class nya, Espresso ini menggunakan id untuk menentukan aksi apa yang akan dilakukan. misal click, typetext, swipe up &amp;amp; down pada recyclerview. dan disini menggunakan System.sleep untuk delay antar aksi.&lt;br /&gt;
&lt;br /&gt;
test class ini ada didalam src/androidTest. untuk menjalankan klik aja pada icon play pada test class. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP6Mus2KG-gNIwjeYlVVgGTwBXkF0kBIJFE4Jfqt-pk9NBZu4o8cudweL_e0J70-cIV_3hbO8BzOpfv7bTZrjIZYourlA4s5gzL5nZ5I5Y28p_IOe3L_0z_LkHQXY3Qg_KJipDjm4XQ0WY/s1600/android_espresso_test_class.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="377" data-original-width="1080" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP6Mus2KG-gNIwjeYlVVgGTwBXkF0kBIJFE4Jfqt-pk9NBZu4o8cudweL_e0J70-cIV_3hbO8BzOpfv7bTZrjIZYourlA4s5gzL5nZ5I5Y28p_IOe3L_0z_LkHQXY3Qg_KJipDjm4XQ0WY/s640/android_espresso_test_class.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
dan seperti biasa sample project untuk Espresso ini ada di &lt;a href="https://github.com/yoesuv-blog/Android-Espresso-Testing" target="_blank"&gt;github&lt;/a&gt;.&lt;br /&gt;
selamat mencoba.&lt;br /&gt;
&lt;br /&gt;
referensi &lt;a href="https://medium.com/android-testing-daily/the-3-tiers-of-the-android-test-pyramid-c1211b359acd" target="_blank"&gt;satu&lt;/a&gt;, &lt;a href="https://medium.com/@ayushkhare/espresso-test-your-ui-now-273fe4252b2c" target="_blank"&gt;dua&lt;/a&gt; dan &lt;a href="https://developer.android.com/training/testing/espresso" target="_blank"&gt;official documentation&lt;/a&gt;.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhzV8KY_o9IFE8RJb5lUwy0PnuAoBZC1QugYRfzHdjJ-qcDhvg9NbUt58Ny6AknVLp9Mzd4MhjfwKqXVXqKhhPo4p3ZO-RQylAARQvqNpnrdsZE0_KIWFB-LcV3caxvXvg2NMRl5qsDjO/s72-c/macam_android_testing.jpeg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Kotlin MVVM Networking dengan RX Java dan RX Android (2) </title><link>http://yoesuv.blogspot.com/2019/01/android-kotlin-mvvm-networking-dengan_9.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 9 Jan 2019 15:35:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-7076686173569623149</guid><description>Lanjutan artikel &lt;a href="https://yoesuv.blogspot.com/2019/01/android-kotlin-mvvm-networking-dengan.html" target="_blank"&gt;sebelumnya&lt;/a&gt;. setelah merhasil mengkoneksikan API langkah selanjutnya adalah menampilkan data pada aplikasi. dan karena datanya disini ada gambarnya maka tambahkan library untuk menampilkan gambar tersebut. disini menggunakan &lt;a href="https://bumptech.github.io/glide/" target="_blank"&gt;Glide&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz5FpqajudC7NlQ1OozI7E8mr-nyqaP4dQCKAftNjCsBA189O2D1b-a6IyWiAr2XDRP5tSuO-pSj0r2Irjyx2ZY0us77e67PwU5M23H5WaZA1iKDap5eco8PtKM3LpSTvDZue4b2gxSE0A/s1600/android_kotlin_mvvm_networking_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="80" data-original-width="467" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz5FpqajudC7NlQ1OozI7E8mr-nyqaP4dQCKAftNjCsBA189O2D1b-a6IyWiAr2XDRP5tSuO-pSj0r2Irjyx2ZY0us77e67PwU5M23H5WaZA1iKDap5eco8PtKM3LpSTvDZue4b2gxSE0A/s1600/android_kotlin_mvvm_networking_1.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
terus yang penting jangan lupa tambahkan di app/build.gradle &lt;span style="color: blue;"&gt;apply plugin: 'kotlin-kapt'&lt;/span&gt; yang nantinya digunakan untuk kotlin compiler.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRT76UWeevQfRUoZbDiuh4ebqtcAEbfrnjVRaUh_uP3f8HQNuZeFiY5DiEVDsfshB0a0L3OGZpGZxlQ1CD6LUyuoIvZPqeTwwpC5F96eBHDwqbznoM195qQ6v9EYWwAp6btwg6OevIA4p5/s1600/android_kotlin_mvvm_networking_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="97" data-original-width="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRT76UWeevQfRUoZbDiuh4ebqtcAEbfrnjVRaUh_uP3f8HQNuZeFiY5DiEVDsfshB0a0L3OGZpGZxlQ1CD6LUyuoIvZPqeTwwpC5F96eBHDwqbznoM195qQ6v9EYWwAp6btwg6OevIA4p5/s1600/android_kotlin_mvvm_networking_2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lanjut ke pembuatan class converter yang akan digunakan untuk menampilkan gambar secara data binding. class nya seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQRDidyz7ZpvWS5-lL0GxokvMQvNFpnLM_VvdGaOoEv7pKn35oz7_bvIbYdAP5kH-Qdgb_9kL0Lg7Oo3GTNNdvKdSKPJ5_u41btt8L2JwEerv27UZNvdhh24fS2FGo6yrZfEig9WtTWZJv/s1600/android_kotlin_mvvm_networking_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="486" data-original-width="507" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQRDidyz7ZpvWS5-lL0GxokvMQvNFpnLM_VvdGaOoEv7pKn35oz7_bvIbYdAP5kH-Qdgb_9kL0Lg7Oo3GTNNdvKdSKPJ5_u41btt8L2JwEerv27UZNvdhh24fS2FGo6yrZfEig9WtTWZJv/s1600/android_kotlin_mvvm_networking_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
persiapan selesai, langkah pertama merubah ItemPlaceViewModel. tambahkan model dari Place dan variable.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM-XGKWjfbZKCWR71J6hjiyNHiab5ncvtY96PV9VdxEoDeNryN4YVKsIlMYeDWGfTKjT4nlDwkiCyBXEeeYI1Rb2EhfEUt_a4VRatrinp8LKgiwjRiwEWQuJHKzkdcqXOR9NCRaXCx4qkH/s1600/android_kotlin_mvvm_networking_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="302" data-original-width="653" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM-XGKWjfbZKCWR71J6hjiyNHiab5ncvtY96PV9VdxEoDeNryN4YVKsIlMYeDWGfTKjT4nlDwkiCyBXEeeYI1Rb2EhfEUt_a4VRatrinp8LKgiwjRiwEWQuJHKzkdcqXOR9NCRaXCx4qkH/s640/android_kotlin_mvvm_networking_4.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
setelah item view model dirubah, lanjut ke layout xml dari item view model tersebut. tampilkan datanya. berikut adalah layout item_place.xml yang sudah dirubah.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/f5d351981e4b8482d0be2356bc6da855.js"&gt;&lt;/script&gt; berikutnya adalah membuat adapter. adapternya seperti biasanya tapi sekarang via data binding. codingnya seperti berikut ini.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/da8a3f30628555f3b4138b2f7f57b1fe.js"&gt;&lt;/script&gt;
setelah itu lanjut ke MainActivity, disini menggunakan LiveData. perhatikan function &lt;span style="color: blue;"&gt;observeLiveData()&lt;/span&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/877170f86e38d8969f21c2e399efbd1e.js"&gt;&lt;/script&gt;
Setelah lumayan lama, akhirnya selesai juga tinggal dijalankan. cek complete repositorynya &lt;a href="https://github.com/yoesuv-blog/Android-MVVM-Networking" target="_blank"&gt;disini&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz5FpqajudC7NlQ1OozI7E8mr-nyqaP4dQCKAftNjCsBA189O2D1b-a6IyWiAr2XDRP5tSuO-pSj0r2Irjyx2ZY0us77e67PwU5M23H5WaZA1iKDap5eco8PtKM3LpSTvDZue4b2gxSE0A/s72-c/android_kotlin_mvvm_networking_1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Android Kotlin MVVM Networking dengan RX Java dan RX Android (1)</title><link>http://yoesuv.blogspot.com/2019/01/android-kotlin-mvvm-networking-dengan.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 9 Jan 2019 09:03:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-2170607857906935045</guid><description>Setelah sebelumnya membuat basic &lt;a href="https://yoesuv.blogspot.com/2019/01/memulai-android-mvvm-dengan-android.html" target="_blank"&gt;android MVVM&lt;/a&gt;. sekarang lanjut ke networking, mendapatkan data dari API dan menampilkannya dalam aplikasi.&lt;br /&gt;
&lt;br /&gt;
contoh API nya diambil dari &lt;a href="https://info-madiun.firebaseapp.com/Sample.json" target="_blank"&gt;sini&lt;/a&gt;. yang nantinya akan ditampilkan berbentuk list.&lt;br /&gt;
&lt;br /&gt;
untuk librarynya disini menggunakan &lt;a href="https://square.github.io/retrofit/" target="_blank"&gt;Retrofit&lt;/a&gt;, &lt;a href="https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor" target="_blank"&gt;OkHttp Loging&lt;/a&gt;, &lt;a href="https://github.com/ReactiveX/RxJava" target="_blank"&gt;Rx Java&lt;/a&gt; dan &lt;a href="https://github.com/ReactiveX/RxAndroid" target="_blank"&gt;Rx Android&lt;/a&gt;. langsung saja setelah membuat project android baru aktifkan mode data binding dan tambahkan library yang akan dipakai.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSp2Wa2f5tKxiEaTMWYfhq7ODmiFYPUO9Lzryvv_XZ61x6qXUOhjHE4Djyoo7GFfxIVF2n6ZXXFR3ynZu8dZqD_rCLjJV9HfGCPHO2xPjuraqm91kXjVaobC1ab3oT5rycD5BxX3zVq30D/s1600/android_mvvm_networking_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="308" data-original-width="650" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSp2Wa2f5tKxiEaTMWYfhq7ODmiFYPUO9Lzryvv_XZ61x6qXUOhjHE4Djyoo7GFfxIVF2n6ZXXFR3ynZu8dZqD_rCLjJV9HfGCPHO2xPjuraqm91kXjVaobC1ab3oT5rycD5BxX3zVq30D/s640/android_mvvm_networking_1.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
oke done, sebelum lanjut ke pembuatan layout siapkan class viewmodel. pertama siapkan viewmodel untuk main activity. buat nama class nya MainViewModel.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqw2lT0uPxIGsr35pj3gEQWO_I2NW0-KgxC-VZquGZoxZLJRsqDFXxlv2hVQJJupWoUtaamRTeXzDrxD-fWLR_aUq5VhdDRSkYMg8sM5Vvkz_C6Jcb8y3C6bD5lKkoSFuXhUH6LrkGWQQ-/s1600/android_mvvm_networking_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="146" data-original-width="617" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqw2lT0uPxIGsr35pj3gEQWO_I2NW0-KgxC-VZquGZoxZLJRsqDFXxlv2hVQJJupWoUtaamRTeXzDrxD-fWLR_aUq5VhdDRSkYMg8sM5Vvkz_C6Jcb8y3C6bD5lKkoSFuXhUH6LrkGWQQ-/s640/android_mvvm_networking_2.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
kemudian class view model untuk item. kasih nama ItemPlaceViewModel. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQGGCkFBloWL-I0ZM_zOpkQT6hGQqB_6rirTbJtEqap11CZn-MBR5frGDEMwRn5jzfCmpAPOjno4f8PKy5JVOzIDp12D9IPk72xd4DwCodPO01dLrQ4zxBUOEzNeEY0lZ_BqhnzQgDdeGo/s1600/android_mvvm_networking_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="138" data-original-width="371" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQGGCkFBloWL-I0ZM_zOpkQT6hGQqB_6rirTbJtEqap11CZn-MBR5frGDEMwRn5jzfCmpAPOjno4f8PKy5JVOzIDp12D9IPk72xd4DwCodPO01dLrQ4zxBUOEzNeEY0lZ_BqhnzQgDdeGo/s1600/android_mvvm_networking_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
persiapan selesai lanjut ke pembuatan layout. pertama layout untuk item place. buat seperti berikut. beri nama item_place.xml dan set data variabel nya ke class view model yang telah dibuat sebelumnya.&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/f162b0207a1b5182194b16e8a871aeaa.js"&gt;&lt;/script&gt;
Lanjut&amp;nbsp; ke layout utama.&amp;nbsp; sama seperti layout diatas jangan lupa set data variabel viewmodel.&lt;br /&gt;
&lt;script src="https://gist.github.com/yoesuv-blog/90f2f3a604aaf8e4c069104111b6c79b.js"&gt;&lt;/script&gt;&lt;br /&gt;
nah sekarang design aplikasinya sudah terlihat.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg32-4iV80yIQtzlluUyYxSEw-qQ_cazhL30vd9nIa5J4t_nV9xjp7leJueqHXiosG0SPsj4oXedylVRWvZSZOmCdaXSuvEGrWJhoDT2U1goMy12IMvyhHJuR60LR6hEl8mn-S5On-vN3Hx/s1600/android_mvvm_networking_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="579" data-original-width="987" height="340" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg32-4iV80yIQtzlluUyYxSEw-qQ_cazhL30vd9nIa5J4t_nV9xjp7leJueqHXiosG0SPsj4oXedylVRWvZSZOmCdaXSuvEGrWJhoDT2U1goMy12IMvyhHJuR60LR6hEl8mn-S5On-vN3Hx/s640/android_mvvm_networking_4.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lanjut ke pembuatan class untuk networking. sebelum itu siapkan class model untuk &lt;a href="https://info-madiun.firebaseapp.com/Sample.json" target="_blank"&gt;API&lt;/a&gt; nya. bisa lewat &lt;a href="https://github.com/wuseal/JsonToKotlinClass" target="_blank"&gt;plugin android studio&lt;/a&gt; atau lewat &lt;a href="http://www.jsonschema2pojo.org/" target="_blank"&gt;online pojo generator&lt;/a&gt;. kurang lebihnya class modelnya seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGYS8S2KZpEksfvNnrqb_0JWtPXyjF9gVwZIYKIooN2jCjl9By8XdvCMvTEt7j44Nq2fVWLlgyPYbUjBQZB6iP9AJTpJ0xIEyldD5NONpFt8rssymy-pQyfpl8ZFg2cP8wPferDtISeDmP/s1600/android_mvvm_networking_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="267" data-original-width="616" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGYS8S2KZpEksfvNnrqb_0JWtPXyjF9gVwZIYKIooN2jCjl9By8XdvCMvTEt7j44Nq2fVWLlgyPYbUjBQZB6iP9AJTpJ0xIEyldD5NONpFt8rssymy-pQyfpl8ZFg2cP8wPferDtISeDmP/s640/android_mvvm_networking_5.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang baru lanjut ke handle API nya. pertama buat interface. buat seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxY78YwfiS6DtgPfw77COb34LjgF4eDjiGcVEfh3ugabSxhaAtFdb7JQmZ9iyFJaIVWsvQx-Va2ZU9FvzmXjxG5m9QJbvQ9CfqdTEuslfgLv7er44wuLFnLhnW8QfYrRvTq6asSpjitd6E/s1600/android_mvvm_networking_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="193" data-original-width="548" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxY78YwfiS6DtgPfw77COb34LjgF4eDjiGcVEfh3ugabSxhaAtFdb7JQmZ9iyFJaIVWsvQx-Va2ZU9FvzmXjxG5m9QJbvQ9CfqdTEuslfgLv7er44wuLFnLhnW8QfYrRvTq6asSpjitd6E/s1600/android_mvvm_networking_6.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
setelah itu buat class untuk networking service.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl1ib1jk-4K_ofGc4l2cZM4Ck2fSlTtI5iPWw1oC68n5O7rlSVYxUMC7AbltlEm2bfaKeobOvIP6fyaR8jVMdQpS1sxZ4in2y8FWmpRCykcQ56vC7OhGP8MMmf15SSXS5Xrd6NLwfyskWP/s1600/android_mvvm_networking_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="413" data-original-width="569" height="385" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl1ib1jk-4K_ofGc4l2cZM4Ck2fSlTtI5iPWw1oC68n5O7rlSVYxUMC7AbltlEm2bfaKeobOvIP6fyaR8jVMdQpS1sxZ4in2y8FWmpRCykcQ56vC7OhGP8MMmf15SSXS5Xrd6NLwfyskWP/s640/android_mvvm_networking_7.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
nah ini adalah class custom untuk Observer. ini akan digunakan di setiap repository yang nanti akan dibuat.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA_oB1D-xeLIzHn3IMgm9uqc8vsNYPh79l6nnf4hP9LTmP-Hg7_blD_gaT5r8qAvKiVM4oegvpWy1QxOApa1cU7ayjemwACaqfOQCOIyAdx-ymyG-9Ah-j34h98ruc0lb3ppKkBhbvwprq/s1600/android_mvvm_networking_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="445" data-original-width="838" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA_oB1D-xeLIzHn3IMgm9uqc8vsNYPh79l6nnf4hP9LTmP-Hg7_blD_gaT5r8qAvKiVM4oegvpWy1QxOApa1cU7ayjemwACaqfOQCOIyAdx-ymyG-9Ah-j34h98ruc0lb3ppKkBhbvwprq/s640/android_mvvm_networking_8.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
seperti ini contoh repositorynya. dalam hal ini cuma satu MainRepository.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2jI8f22j99bhq7suGx86VYzzCZXl9XijS5SYbQstujVnMFO76bpmSK5NbypVubG40HRTzI-1Uoz2_a7wqKOW7raYwa8kU5Ft0B7t7oMrTPY8Zh7dTjQGUOxNHekgh8O4lEtjSDKGqfbrU/s1600/android_mvvm_networking_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="526" data-original-width="776" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2jI8f22j99bhq7suGx86VYzzCZXl9XijS5SYbQstujVnMFO76bpmSK5NbypVubG40HRTzI-1Uoz2_a7wqKOW7raYwa8kU5Ft0B7t7oMrTPY8Zh7dTjQGUOxNHekgh8O4lEtjSDKGqfbrU/s640/android_mvvm_networking_9.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
class untuk networking sudah siap, sekarang ubah MainViewModel. gunakan repositorynya disini. lihat gambar berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOVa23Bwl4uhpfo4gSxmOlGq3FgXQGmmSyOLs0moKCknuG5vQm6xFnmr-c9AF3-3mvMPkiHYHA_WGbQPoncG8pwFgj0rgX1drIHEAubNf3lzBJAQFR2yvNA0FhN8-ltq1yLu9FZ5CpsT1L/s1600/android_mvvm_networking_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="468" data-original-width="635" height="396" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOVa23Bwl4uhpfo4gSxmOlGq3FgXQGmmSyOLs0moKCknuG5vQm6xFnmr-c9AF3-3mvMPkiHYHA_WGbQPoncG8pwFgj0rgX1drIHEAubNf3lzBJAQFR2yvNA0FhN8-ltq1yLu9FZ5CpsT1L/s640/android_mvvm_networking_11.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
sip, untuk logic mendapatkan data dari API sedah selesai. tinggal test lewat MainActivitynya. buat seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUwArTEH3Y-V1uXEQVFEzm6UzbGGz3PgTZYLmYyzAEB3-YgickNL1qtYqo_2NAK53ZSbc2WgG77mSGV4i6qg9R8smg8Pt2ik3B1wx9-yzQMHOzsUr0PlQf2fSSQhS30C-Hei1c33YbrDOQ/s1600/android_mvvm_networking_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="412" data-original-width="683" height="335" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUwArTEH3Y-V1uXEQVFEzm6UzbGGz3PgTZYLmYyzAEB3-YgickNL1qtYqo_2NAK53ZSbc2WgG77mSGV4i6qg9R8smg8Pt2ik3B1wx9-yzQMHOzsUr0PlQf2fSSQhS30C-Hei1c33YbrDOQ/s640/android_mvvm_networking_12.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang coba jalankan dan lihat log nya. jika hasilnya seperti berikut ini. maka sudah berhasil mengkoneksikan data API dengan Rx Java dan Rx Android.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNnuJtFVBihtJ-BTyNn7-99_Myt6qm418UcLwt1FSXn0Zo-ce00L8Iucp0i8FoYN76xWgtnNymqSm8JpWIAfz9soIX3nxDRTQ4WLoyOaJrLyNi1LpsA9zI4otSkgugxrfh4Orx3ZZWfKo3/s1600/android_mvvm_networking_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="526" data-original-width="1314" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNnuJtFVBihtJ-BTyNn7-99_Myt6qm418UcLwt1FSXn0Zo-ce00L8Iucp0i8FoYN76xWgtnNymqSm8JpWIAfz9soIX3nxDRTQ4WLoyOaJrLyNi1LpsA9zI4otSkgugxrfh4Orx3ZZWfKo3/s640/android_mvvm_networking_13.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selamat mencoba.&lt;br /&gt;
artikel bersambung &lt;a href="https://yoesuv.blogspot.com/2019/01/android-kotlin-mvvm-networking-dengan_9.html" target="_blank"&gt;kesini&lt;/a&gt;. </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSp2Wa2f5tKxiEaTMWYfhq7ODmiFYPUO9Lzryvv_XZ61x6qXUOhjHE4Djyoo7GFfxIVF2n6ZXXFR3ynZu8dZqD_rCLjJV9HfGCPHO2xPjuraqm91kXjVaobC1ab3oT5rycD5BxX3zVq30D/s72-c/android_mvvm_networking_1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="2291" type="application/json" url="https://info-madiun.firebaseapp.com/Sample.json"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>Setelah sebelumnya membuat basic android MVVM. sekarang lanjut ke networking, mendapatkan data dari API dan menampilkannya dalam aplikasi. contoh API nya diambil dari sini. yang nantinya akan ditampilkan berbentuk list. untuk librarynya disini menggunakan Retrofit, OkHttp Loging, Rx Java dan Rx Android. langsung saja setelah membuat project android baru aktifkan mode data binding dan tambahkan library yang akan dipakai. oke done, sebelum lanjut ke pembuatan layout siapkan class viewmodel. pertama siapkan viewmodel untuk main activity. buat nama class nya MainViewModel. &amp;nbsp; kemudian class view model untuk item. kasih nama ItemPlaceViewModel. persiapan selesai lanjut ke pembuatan layout. pertama layout untuk item place. buat seperti berikut. beri nama item_place.xml dan set data variabel nya ke class view model yang telah dibuat sebelumnya. Lanjut&amp;nbsp; ke layout utama.&amp;nbsp; sama seperti layout diatas jangan lupa set data variabel viewmodel. nah sekarang design aplikasinya sudah terlihat. lanjut ke pembuatan class untuk networking. sebelum itu siapkan class model untuk API nya. bisa lewat plugin android studio atau lewat online pojo generator. kurang lebihnya class modelnya seperti berikut ini. sekarang baru lanjut ke handle API nya. pertama buat interface. buat seperti berikut. setelah itu buat class untuk networking service. nah ini adalah class custom untuk Observer. ini akan digunakan di setiap repository yang nanti akan dibuat. seperti ini contoh repositorynya. dalam hal ini cuma satu MainRepository. class untuk networking sudah siap, sekarang ubah MainViewModel. gunakan repositorynya disini. lihat gambar berikut ini. sip, untuk logic mendapatkan data dari API sedah selesai. tinggal test lewat MainActivitynya. buat seperti berikut ini. sekarang coba jalankan dan lihat log nya. jika hasilnya seperti berikut ini. maka sudah berhasil mengkoneksikan data API dengan Rx Java dan Rx Android. selamat mencoba. artikel bersambung kesini.</itunes:subtitle><itunes:author>noreply@blogger.com (Unknown)</itunes:author><itunes:summary>Setelah sebelumnya membuat basic android MVVM. sekarang lanjut ke networking, mendapatkan data dari API dan menampilkannya dalam aplikasi. contoh API nya diambil dari sini. yang nantinya akan ditampilkan berbentuk list. untuk librarynya disini menggunakan Retrofit, OkHttp Loging, Rx Java dan Rx Android. langsung saja setelah membuat project android baru aktifkan mode data binding dan tambahkan library yang akan dipakai. oke done, sebelum lanjut ke pembuatan layout siapkan class viewmodel. pertama siapkan viewmodel untuk main activity. buat nama class nya MainViewModel. &amp;nbsp; kemudian class view model untuk item. kasih nama ItemPlaceViewModel. persiapan selesai lanjut ke pembuatan layout. pertama layout untuk item place. buat seperti berikut. beri nama item_place.xml dan set data variabel nya ke class view model yang telah dibuat sebelumnya. Lanjut&amp;nbsp; ke layout utama.&amp;nbsp; sama seperti layout diatas jangan lupa set data variabel viewmodel. nah sekarang design aplikasinya sudah terlihat. lanjut ke pembuatan class untuk networking. sebelum itu siapkan class model untuk API nya. bisa lewat plugin android studio atau lewat online pojo generator. kurang lebihnya class modelnya seperti berikut ini. sekarang baru lanjut ke handle API nya. pertama buat interface. buat seperti berikut. setelah itu buat class untuk networking service. nah ini adalah class custom untuk Observer. ini akan digunakan di setiap repository yang nanti akan dibuat. seperti ini contoh repositorynya. dalam hal ini cuma satu MainRepository. class untuk networking sudah siap, sekarang ubah MainViewModel. gunakan repositorynya disini. lihat gambar berikut ini. sip, untuk logic mendapatkan data dari API sedah selesai. tinggal test lewat MainActivitynya. buat seperti berikut ini. sekarang coba jalankan dan lihat log nya. jika hasilnya seperti berikut ini. maka sudah berhasil mengkoneksikan data API dengan Rx Java dan Rx Android. selamat mencoba. artikel bersambung kesini.</itunes:summary><itunes:keywords>Android</itunes:keywords></item><item><title>Memulai Android MVVM dengan Android Architecture Component</title><link>http://yoesuv.blogspot.com/2019/01/memulai-android-mvvm-dengan-android.html</link><category>Android</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 2 Jan 2019 14:06:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-6667647176751762776</guid><description>Note: post updated 8 juni 2020&lt;br /&gt;
&lt;br /&gt;
Sekarang Android sudah resmi mempunyai Design Programming Pattern yaitu MVVM (Model View ViewModel) dan sudah menjadi bagian dari &lt;a href="https://developer.android.com/topic/libraries/architecture/" target="_blank"&gt;Android Architecture Component&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Untuk tutorial kali ini yaitu menerapkan MVVM pada project android. biar mudah ini dimulai dari awal. pertama buat project android baru. jangan lupa centang Include Kotlin Support (belajar Kotlin dulu &lt;a href="https://yoesuv.blogspot.com/2018/12/index-belajar-kotlin.html" target="_blank"&gt;disini&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHscw82Jbsn_xCUR4kzAvfaULw6uCXomWhHOxgP0Bvp3S1RV8tB-WhfCsoHPYQM6yJs8b52AfF8KKqQZLUM-gV_Hvg4Wddggf1PrCunzJa8VsHeiYP1wmHn_uuTO3lBfjzlLvzoXdekz0E/s1600/android_kotlin_mvvm_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHscw82Jbsn_xCUR4kzAvfaULw6uCXomWhHOxgP0Bvp3S1RV8tB-WhfCsoHPYQM6yJs8b52AfF8KKqQZLUM-gV_Hvg4Wddggf1PrCunzJa8VsHeiYP1wmHn_uuTO3lBfjzlLvzoXdekz0E/s640/android_kotlin_mvvm_1.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lanjut pilih target SDK. minimal support API 16 Android 4.1&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgt9i-ezPrW7X9AZK2FXL4l9lvFtecYTBfgKT842reoOjw9j7ZxOHK-7BP72X2hdDejA59H1wuWRnINiHGozFzFhseWpyD333SMqLd0hQOgNCSKuurWEHwGt7Px5MAZjt3TdpOEPUyHST_/s1600/android_kotlin_mvvm_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgt9i-ezPrW7X9AZK2FXL4l9lvFtecYTBfgKT842reoOjw9j7ZxOHK-7BP72X2hdDejA59H1wuWRnINiHGozFzFhseWpyD333SMqLd0hQOgNCSKuurWEHwGt7Px5MAZjt3TdpOEPUyHST_/s640/android_kotlin_mvvm_2.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
pilih default layout Empty Activity.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiyAqZ7uh3Sps8Jl_epTQcemPimJvmTyvLR-dP6heqUon160UGgtmIvMlNV_j2A74lR81KqoyNae6AjzDWIR2sX94RsIZVzE9-k1Ou-A-Gypm4zwJHnc_GAB8OvnBp2Uxc3L-gGpr6TAsp/s1600/android_kotlin_mvvm_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiyAqZ7uh3Sps8Jl_epTQcemPimJvmTyvLR-dP6heqUon160UGgtmIvMlNV_j2A74lR81KqoyNae6AjzDWIR2sX94RsIZVzE9-k1Ou-A-Gypm4zwJHnc_GAB8OvnBp2Uxc3L-gGpr6TAsp/s640/android_kotlin_mvvm_3.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lanjut ke pembuatan default layout dan penamaan, biarkan default saja.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ-0MBI_JE2_R29FXFcenhNFDoU5yHaO-gujurgapW-zs1ufkcPczJ8i9nN2YSPtGcPgDbGAbzidkQ_vdLFviN0YLcfMyAuDWQE5aoWjQ5l3OiVIrXrw5X_sCHwQY3XB9r_1N25Sj6Vngm/s1600/android_kotlin_mvvm_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="738" data-original-width="1366" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ-0MBI_JE2_R29FXFcenhNFDoU5yHaO-gujurgapW-zs1ufkcPczJ8i9nN2YSPtGcPgDbGAbzidkQ_vdLFviN0YLcfMyAuDWQE5aoWjQ5l3OiVIrXrw5X_sCHwQY3XB9r_1N25Sj6Vngm/s640/android_kotlin_mvvm_4.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
ketika project android sukses dibuat. aktifkan dulu mode &lt;a href="https://developer.android.com/topic/libraries/data-binding/start" target="_blank"&gt;data bindingnya&lt;/a&gt;. buka file app/build.gradle. di dalam android{ } tambahkan buildFeatures dataBinding. lihat gambar dibawah ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhueHdlWUWUSFLJJTLdztHb8IwHToNtubko2GR7Y0tQ_HqX7li-YvnQ-ph8uJr_E-nI6LBcORHAbQiISthE8-6nD_qjvic38MnjjnWLGsiB-g6zNmwYUK5sr_4inKmbxFJYXaEUnVXiUzjY/s1600/Screenshot_20200608_113853.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="483" data-original-width="722" height="325" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhueHdlWUWUSFLJJTLdztHb8IwHToNtubko2GR7Y0tQ_HqX7li-YvnQ-ph8uJr_E-nI6LBcORHAbQiISthE8-6nD_qjvic38MnjjnWLGsiB-g6zNmwYUK5sr_4inKmbxFJYXaEUnVXiUzjY/s640/Screenshot_20200608_113853.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
lanjut menambah library untuk ViewModel. karena biasanya project android juga menggunakan live data maka library yang dipakai komplit viewmodel dan live data. tambahkan library android arch lifecycle seperti dibawah ini (sampai post ini dibuat versinya 2.2.0). untuk versi lengkapnya bisa dilihat &lt;a href="https://developer.android.com/topic/libraries/architecture/adding-components#lifecycle" target="_blank"&gt;disini&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJAXQO-OpZx8BA-hjH3lZfz1eY7u7cVDVC7fop5OxFxP0tF8zEKfnjc7NJ8XKxH4KlKWunC92Fzi76c8cMK-dxEXZVmBtSLAHmZ03GUijmvEghznG-e-prqZiAcWEfrdQY8-RCALF5iXZd/s1600/Screenshot_20200608_114325.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="284" data-original-width="642" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJAXQO-OpZx8BA-hjH3lZfz1eY7u7cVDVC7fop5OxFxP0tF8zEKfnjc7NJ8XKxH4KlKWunC92Fzi76c8cMK-dxEXZVmBtSLAHmZ03GUijmvEghznG-e-prqZiAcWEfrdQY8-RCALF5iXZd/s640/Screenshot_20200608_114325.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
sekarang library siap digunakan. buat class untuk viewmodelnya. buat class nya extends AndroidViewModel. lihat gambar berikut&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWzwrYf4QKgSrvTJ2FIkC-paZgH16kYYzRRGPhfgU14v7gvLnnUcE48E1npGzT9q3WVyJhaQnhW8x-PtoA5NfM5D_LoUi5cIFqOpJ9MeFCoku-jJD0j13DyolD5bJbVRvKOc13BrZng2Qk/s1600/android_kotlin_mvvm_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="451" data-original-width="980" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWzwrYf4QKgSrvTJ2FIkC-paZgH16kYYzRRGPhfgU14v7gvLnnUcE48E1npGzT9q3WVyJhaQnhW8x-PtoA5NfM5D_LoUi5cIFqOpJ9MeFCoku-jJD0j13DyolD5bJbVRvKOc13BrZng2Qk/s640/android_kotlin_mvvm_7.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang tempatkan class view model pada layout xml. dalam hal ini nama layoutnya activity_main.xml dan rubah parent/top level xml dengan tag &lt;layout&gt; &lt;span style="color: blue;"&gt;layout&lt;/span&gt; untuk class viewmodelnya ditambahkan pada tag &lt;span style="color: blue;"&gt;data&lt;/span&gt;&lt;data&gt; didalam &lt;variable&gt;&lt;span style="color: blue;"&gt;variable&lt;/span&gt;. lihat gambar dibawah ini.&lt;/variable&gt;&lt;/data&gt;&lt;/layout&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNOYJox2PCjctYOufkQhMw2E5DTvd8Rx-pIyuUbTf9RZGRG1UiH3_NFxSm_gAObw8s2ScZEGPL5PjU5a_O8-lOtR6vAzQ08njT1werZ-6iShe02NQ_oUWOUZph9TUjVqxq4GOr4jKTa0-M/s1600/android_kotlin_mvvm_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="495" data-original-width="935" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNOYJox2PCjctYOufkQhMw2E5DTvd8Rx-pIyuUbTf9RZGRG1UiH3_NFxSm_gAObw8s2ScZEGPL5PjU5a_O8-lOtR6vAzQ08njT1werZ-6iShe02NQ_oUWOUZph9TUjVqxq4GOr4jKTa0-M/s640/android_kotlin_mvvm_9.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
untuk menampilkannya sekarang buka class untuk view. dalam hal ini class MainActivity. lihat gambar dibawah ini. buat variabel binding dan viewmodel. keterangan &lt;span style="color: blue;"&gt;ActivityMainBinding&lt;/span&gt; disini didapat otomatis dari generate layout &lt;span style="color: blue;"&gt;activity_main.xml&lt;/span&gt; (data binding). jika tidak muncul coba di clean - re-build project.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqNT18PB0dsZNId9AWAnTZ4NivrIRt4PI5OfvJ2jwolFVldmKHYg3dbLSm2NBn2KGzhxoDdU3veH6tZLReuWQbriFN8p8yKNPfxONfI5oa5HFQ4VtqqH7Y6JyBgbsJzUgnwArc-R6IuALa/s1600/Screenshot_20200608_114804.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="339" data-original-width="699" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqNT18PB0dsZNId9AWAnTZ4NivrIRt4PI5OfvJ2jwolFVldmKHYg3dbLSm2NBn2KGzhxoDdU3veH6tZLReuWQbriFN8p8yKNPfxONfI5oa5HFQ4VtqqH7Y6JyBgbsJzUgnwArc-R6IuALa/s640/Screenshot_20200608_114804.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
mantab, sekarang viewmodel sudah tersambung ke view, lanjut buat class untuk model. buat class Mahasiswa&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEIoke_pPEie4qWVghMFTDt3PXetCHQcix9CFSO3Af3seYsZPjuFCar4J6TwRPrUIWb7CtNU2WgsBz2VlpHdTfyp5XHLt-GLgV3oMSd8CktZXSBmfZM7Wq6_D8DrsGtuvaYigY6tkyDagg/s1600/android_kotlin_mvvm_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="463" data-original-width="917" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEIoke_pPEie4qWVghMFTDt3PXetCHQcix9CFSO3Af3seYsZPjuFCar4J6TwRPrUIWb7CtNU2WgsBz2VlpHdTfyp5XHLt-GLgV3oMSd8CktZXSBmfZM7Wq6_D8DrsGtuvaYigY6tkyDagg/s640/android_kotlin_mvvm_11.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lanjut ke class ViewModelnya buat variabel ObservableField untuk ditampilkan ke view xml. sekaligus buat function untuk set data. untuk lebih jelasnya lihat gambar berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjewmigQhvSIbrSG1n8XoniY-EME93ovAUuTzjGAsNs2tBYYIhsDsHlcLiCWgTFUdbfDNurjIgJYnSRnvXvLb9QxIMlAPh8qBH6Cb9atZaDvJU8tbyB6aIdDG797RS5w0xzwShevXE0mtJR/s1600/android_kotlin_mvvm_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="440" data-original-width="978" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjewmigQhvSIbrSG1n8XoniY-EME93ovAUuTzjGAsNs2tBYYIhsDsHlcLiCWgTFUdbfDNurjIgJYnSRnvXvLb9QxIMlAPh8qBH6Cb9atZaDvJU8tbyB6aIdDG797RS5w0xzwShevXE0mtJR/s640/android_kotlin_mvvm_12.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang menampilkan variabel nim. nama dan jurusan pada view xml. caranya seperti berikut ini. update dulu layout xmlnya, panggil nama &lt;span style="color: blue;"&gt;data&lt;/span&gt; &lt;span style="color: blue;"&gt;variable&lt;/span&gt; di ikuti nama variabel pada class ViewModel. lihat gambar berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAKHT76fgD-eQs6Zae_ZV9va_3sk7REVB3eNa26TzOtXSfL_9n1m9trjvfu9-y8z9b8BhfGx0d8fm-Gr01CyEBwWkaPTY2Qmjdq7fMGlR-rWC95Kv3Z-MMbQJYnWQsEixUz591uA25IShn/s1600/android_kotlin_mvvm_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="586" data-original-width="580" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAKHT76fgD-eQs6Zae_ZV9va_3sk7REVB3eNa26TzOtXSfL_9n1m9trjvfu9-y8z9b8BhfGx0d8fm-Gr01CyEBwWkaPTY2Qmjdq7fMGlR-rWC95Kv3Z-MMbQJYnWQsEixUz591uA25IShn/s640/android_kotlin_mvvm_13.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
langkah terakhir isikan data lewat view dalam hal ini MainActivity.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1o2TkQO6_sN0V-sUSSS6M5dI16u5TbIX871AfBXRJs3orgUb5VCBAchKycmMq_HmdnrCJ02BreWxryE4O2XjIA8Fu8YQjriGHrd0lARgWoBSzVHd6GrjnEHXAWAc-9njLcd6XTbzg7tPw/s1600/Screenshot_20200608_115517.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="377" data-original-width="703" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1o2TkQO6_sN0V-sUSSS6M5dI16u5TbIX871AfBXRJs3orgUb5VCBAchKycmMq_HmdnrCJ02BreWxryE4O2XjIA8Fu8YQjriGHrd0lARgWoBSzVHd6GrjnEHXAWAc-9njLcd6XTbzg7tPw/s640/Screenshot_20200608_115517.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
tinggal jalankan dan selamat sudah membuat project android dengan MVVM.&lt;br /&gt;
selamat mencoba.&lt;br /&gt;
&lt;br /&gt;
lihat source code nya &lt;a href="https://github.com/yoesuv-blog/Android-Kotlin-MVVM" target="_blank"&gt;disini&lt;/a&gt;. </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHscw82Jbsn_xCUR4kzAvfaULw6uCXomWhHOxgP0Bvp3S1RV8tB-WhfCsoHPYQM6yJs8b52AfF8KKqQZLUM-gV_Hvg4Wddggf1PrCunzJa8VsHeiYP1wmHn_uuTO3lBfjzlLvzoXdekz0E/s72-c/android_kotlin_mvvm_1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Index Belajar Kotlin</title><link>http://yoesuv.blogspot.com/2018/12/index-belajar-kotlin.html</link><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 4 Dec 2018 14:05:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-7724433296947147017</guid><description>Berikut merupakan&amp;nbsp;index Belajar Kotlin&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/07/memulai-belajar-kotlin.html" target="_blank"&gt;Memulai Belajar Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/07/deklarasi-variabel-pada-kotlin.html" target="_blank"&gt;Deklarasi Variabel pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/07/type-datavariabel-pada-kotlin.html" target="_blank"&gt;Type Data/Variabel pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/07/bentuk-perulangan-pada-kotlin.html" target="_blank"&gt;Bentuk Perulangan pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/08/percabangan-conditional-statements-pada.html" target="_blank"&gt;Percabangan (Conditional Statements) pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/08/fungsi-function-pada-kotlin.html" target="_blank"&gt;Fungsi (Function) pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/08/membuat-class-pada-kotlin.html" target="_blank"&gt;Membuat Kelas (Class) pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/08/membuat-custom-getter-dan-setter-pada.html" target="_blank"&gt;Membuat Custom Getter dan Setter pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/08/member-function-dan-access-modifier.html" target="_blank"&gt;Member Function dan Access Modifier pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2017/08/kotlin-data-classes.html" target="_blank"&gt;Kotlin data Classes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2018/01/enum-class-pada-kotlin.html" target="_blank"&gt;Enum Class pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2018/01/object-pada-kotlin.html" target="_blank"&gt;Object pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2018/01/pewarisan-inheritance-pada-kotlin.html" target="_blank"&gt;Pewarisan (Inheritance) pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2018/02/type-casting-pada-kotlin.html" target="_blank"&gt;Type Casting pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.co.id/2018/02/type-exception-pada-kotlin.html" target="_blank"&gt;Type Exception pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.com/2018/10/abstract-class-pada-kotlin.html" target="_blank"&gt;Abstract Class pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.com/2018/10/interface-pada-kotlin.html" target="_blank"&gt;Interface pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.com/2018/11/higher-order-function-pada-kotlin.html" target="_blank"&gt;Higher Order Function pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.com/2018/11/lambda-expression-pada-kotlin.html" target="_blank"&gt;Lambda Expression pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.com/2018/11/null-safety-pada-kotlin.html" target="_blank"&gt;Null Safety pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yoesuv.blogspot.com/2018/11/extension-function-pada-kotlin.html" target="_blank"&gt;Extension Function pada Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Extension Function pada Kotlin</title><link>http://yoesuv.blogspot.com/2018/11/extension-function-pada-kotlin.html</link><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Thu, 8 Nov 2018 16:31:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-9141718430299592106</guid><description>Extension function ini digunakan untuk menambahkan suatu fungsi pada class tanpa harus mewarisi/extend dari class asal. untuk lebih jelasnya perhatikan contoh berikut ini.&lt;br /&gt;
&lt;br /&gt;
misal class String mau ditambahkan &lt;i&gt;extension function&lt;/i&gt; toTitleCase. perhatikan susunannya yaitu &lt;span style="color: blue;"&gt;[class].[nama extension]&lt;/span&gt; dan seperti function bisa terdapat parameter dan bertipe return atau tidak.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJd-HDJ4nk3fG86CPvY-14DAgJ5EkPo2NEXrZejxqCfoeJmvE3y_C2dgjPSuzuqCHzfli4MfQcdl9FTt1jYz5g7_sAI2DgPIqdj7LBqwQF0bwdKVfHu-mZAh9u3xNlpawrHzGMXjriKD6y/s1600/kotlin_extension_function.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="101" data-original-width="541" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJd-HDJ4nk3fG86CPvY-14DAgJ5EkPo2NEXrZejxqCfoeJmvE3y_C2dgjPSuzuqCHzfli4MfQcdl9FTt1jYz5g7_sAI2DgPIqdj7LBqwQF0bwdKVfHu-mZAh9u3xNlpawrHzGMXjriKD6y/s1600/kotlin_extension_function.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang &lt;i&gt;extension function&lt;/i&gt; sudah siap digunakan. caranya yaitu langsung panggil saja dibelakang suatu String. akan muncul &lt;i&gt;extension function&lt;/i&gt; yang telah dibuat tadi.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUz78-xRilm3D_tNh8z01SOCMK_z0O4p00Ygcn5TDm9UAGbBN5ewash17xAf37qy9njlKS7dQbCfK6UvMl78-AiVZy2mhAYLcwrftQIe_ApqL64FA-7BilExoffYouoDwbEC93vciElrOI/s1600/kotlin_extension_function_example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="88" data-original-width="387" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUz78-xRilm3D_tNh8z01SOCMK_z0O4p00Ygcn5TDm9UAGbBN5ewash17xAf37qy9njlKS7dQbCfK6UvMl78-AiVZy2mhAYLcwrftQIe_ApqL64FA-7BilExoffYouoDwbEC93vciElrOI/s1600/kotlin_extension_function_example.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
jika script diatas dijalankan maka hasilnya akan seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfp9NAos94cN3d7t0TcTGrBxXXc4g3okw6aFcLyPwpcXtENIb64zfFGSg91Gxw_5sc478oYteKRpagpUy3i9GZT7Dx8OLOHdoVfD881dOW8-lmyRSWvzWbzmrtKKi2dzh7DYBTBwl3YFXO/s1600/kotlin_extension_function_result.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="112" data-original-width="353" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfp9NAos94cN3d7t0TcTGrBxXXc4g3okw6aFcLyPwpcXtENIb64zfFGSg91Gxw_5sc478oYteKRpagpUy3i9GZT7Dx8OLOHdoVfD881dOW8-lmyRSWvzWbzmrtKKi2dzh7DYBTBwl3YFXO/s1600/kotlin_extension_function_result.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
terlihat kan perbedaannya, yaitu susunan stringnya sudah huruf besar dan kecil dibandingkan dengan inputan dari variabel.&lt;br /&gt;
&lt;br /&gt;
Lanjut, sekarang menambahkan parameter pada &lt;i&gt;extension function&lt;/i&gt;. perhatikan gambar berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhibPCD_3aRo7ofLBs2X-itDtZNHXX1Ykx3JH-3pZzSkX5UlWiICdUwUMAAOMQdrmKoK2Uzb6kNCuGLbcat8bIkRwYJTrT_mV5OYTMNO9PNqgAbj8TpNZ35fbsChI5HDnv2kJpSclJ_Sy3R/s1600/kotlin_extension_function_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="102" data-original-width="627" height="90" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhibPCD_3aRo7ofLBs2X-itDtZNHXX1Ykx3JH-3pZzSkX5UlWiICdUwUMAAOMQdrmKoK2Uzb6kNCuGLbcat8bIkRwYJTrT_mV5OYTMNO9PNqgAbj8TpNZ35fbsChI5HDnv2kJpSclJ_Sy3R/s640/kotlin_extension_function_2.png" width="520" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
cara menggunakannya juga sama, yaitu tinggal panggil saja dibelakan String tapi kali ini memakai parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8OMzioK3ku-5SXV5D6RSOCO_a4NzctnbCm74mhr8LeFDAM89K7bRYQQ3sF8Zo_F-OavFAxCCz-DYTonT69OMDq3JVMM_4CkJxIHVOrwioGcVvnWyZfLVk9zJb0OTqyaTE4Cc4DdbKwgHu/s1600/kotlin_extension_function_example_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="88" data-original-width="437" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8OMzioK3ku-5SXV5D6RSOCO_a4NzctnbCm74mhr8LeFDAM89K7bRYQQ3sF8Zo_F-OavFAxCCz-DYTonT69OMDq3JVMM_4CkJxIHVOrwioGcVvnWyZfLVk9zJb0OTqyaTE4Cc4DdbKwgHu/s1600/kotlin_extension_function_example_2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang jika dijalankan maka hasilnya akan seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_bZgm17gz0ap7_Z0RqSBM6fBxgW59YCDIhUep1tGhHeZgPrlY-lRHnTRyQjZg92xmQD-sfF2r6oVsoFI58QM6mcD2Qt2ytaGXDn4Kug5OR9jE280JH9yktaqf9YqNhqjKtYNB_gU8vSEg/s1600/kotlin_extension_function_result_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="100" data-original-width="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_bZgm17gz0ap7_Z0RqSBM6fBxgW59YCDIhUep1tGhHeZgPrlY-lRHnTRyQjZg92xmQD-sfF2r6oVsoFI58QM6mcD2Qt2ytaGXDn4Kug5OR9jE280JH9yktaqf9YqNhqjKtYNB_gU8vSEg/s1600/kotlin_extension_function_result_2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJd-HDJ4nk3fG86CPvY-14DAgJ5EkPo2NEXrZejxqCfoeJmvE3y_C2dgjPSuzuqCHzfli4MfQcdl9FTt1jYz5g7_sAI2DgPIqdj7LBqwQF0bwdKVfHu-mZAh9u3xNlpawrHzGMXjriKD6y/s72-c/kotlin_extension_function.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Null Safety pada Kotlin</title><link>http://yoesuv.blogspot.com/2018/11/null-safety-pada-kotlin.html</link><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 6 Nov 2018 10:52:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-4905732031189681344</guid><description>Seringkali pada java mengalami &lt;i&gt;null pointer exception&lt;/i&gt;, jika suatu data nilainya &lt;i&gt;null&lt;/i&gt;. nah, pada kotlin hal seperti itu bisa dihindari karena secara default bentuk type/variabel pada kotlin tidak bisa menggunakan nilai &lt;i&gt;null&lt;/i&gt;. langsung saja ke contoh berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhueHOpHmryxxk_9pWhVYrYlaoinv41pgmx72i9oz9N_esbxCBNtxEpusDjkqu1Tyt6yoDt6I4laqBZKgDqeFHNeyArbWwXNlkpkuZJToBvKYqkqa9SC8eZZTwDzusPwQLlfLo7_JPwm7m4/s1600/kotlin_null_safety.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="138" data-original-width="412" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhueHOpHmryxxk_9pWhVYrYlaoinv41pgmx72i9oz9N_esbxCBNtxEpusDjkqu1Tyt6yoDt6I4laqBZKgDqeFHNeyArbWwXNlkpkuZJToBvKYqkqa9SC8eZZTwDzusPwQLlfLo7_JPwm7m4/s1600/kotlin_null_safety.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
penjelasannya yaitu variabel nama yang bertipe string tidak bisa diisi dengan &lt;i&gt;null&lt;/i&gt;. karena default kotlin tadi yang tidak menerima &lt;i&gt;null&lt;/i&gt;. bagaimana jika ingin tetap &lt;i&gt;null&lt;/i&gt; dan aman tidak ada &lt;i&gt;null pointer exception&lt;/i&gt;?&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizxnnzhgDG_BXthZxHZx4grjouKs5Sgd45O-sy86sfPpa785Qs6r9vtrSvrh1gUhotW8Yqw7YxfT22ckZd1VBGKGS3FiO6n86uUrMNAbD84raCnYSpWLKazXGm0-XfFVVrJD8qt_m1DPYg/s1600/kotlin_null_safety_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="120" data-original-width="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizxnnzhgDG_BXthZxHZx4grjouKs5Sgd45O-sy86sfPpa785Qs6r9vtrSvrh1gUhotW8Yqw7YxfT22ckZd1VBGKGS3FiO6n86uUrMNAbD84raCnYSpWLKazXGm0-XfFVVrJD8qt_m1DPYg/s1600/kotlin_null_safety_2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
jawabanya yaitu dengan menambahkan tanda tanya (?) pada type variabelnya. coba di &lt;i&gt;println&lt;/i&gt; dan lihat hasilnya seperti apa.&lt;br /&gt;
&lt;br /&gt;
penerapan null safety contohnya pada kasus berikut ini. ada class mahasiswa dengan variable nim dan nama. terus buat list yang isinya data mahasiswa. lihat contoh berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR_fZUAxAgS-os7yO3TbJcKRvWY9ZXzLbHpXTqkaV0f7KNG4jqOQkpasnGmXbpUVNkoVPVce0DXrY9uioR230deNRpKZRXyM6hMaMzn4fSReae-LlrBYwNnEU8fgCIygCO1bvHhq5nBbPN/s1600/safe_calls.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="290" data-original-width="489" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR_fZUAxAgS-os7yO3TbJcKRvWY9ZXzLbHpXTqkaV0f7KNG4jqOQkpasnGmXbpUVNkoVPVce0DXrY9uioR230deNRpKZRXyM6hMaMzn4fSReae-LlrBYwNnEU8fgCIygCO1bvHhq5nBbPN/s1600/safe_calls.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
bisa dilihat diatas ada nama mahasiswa yang &lt;i&gt;null&lt;/i&gt;. dan karena sudah menggunakan safe calls (dengan tanda ? mengikuti type/variabel) maka jika dijalankan akan aman-aman saja.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieoPZm_R2S91BheICIO4kpycfkjamftEtXF6wcv0qOgl2CWL7qJUftZXOYYBi3xTDEvvGzz7R3I3oyhsXhkVkqK4qlpKOYPoWWN4GiKfgXdksp3fHl8Zijm6z6UUKt4bx-qMTq1gEr-2P0/s1600/safe_calls_run.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="149" data-original-width="331" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieoPZm_R2S91BheICIO4kpycfkjamftEtXF6wcv0qOgl2CWL7qJUftZXOYYBi3xTDEvvGzz7R3I3oyhsXhkVkqK4qlpKOYPoWWN4GiKfgXdksp3fHl8Zijm6z6UUKt4bx-qMTq1gEr-2P0/s1600/safe_calls_run.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
bagaimana? mantab kan? maka dengan safe calls ini bisa menghindarkan error &lt;i&gt;null pointer exception&lt;/i&gt; (NPE).&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhueHOpHmryxxk_9pWhVYrYlaoinv41pgmx72i9oz9N_esbxCBNtxEpusDjkqu1Tyt6yoDt6I4laqBZKgDqeFHNeyArbWwXNlkpkuZJToBvKYqkqa9SC8eZZTwDzusPwQLlfLo7_JPwm7m4/s72-c/kotlin_null_safety.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Lambda Expression pada Kotlin</title><link>http://yoesuv.blogspot.com/2018/11/lambda-expression-pada-kotlin.html</link><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 2 Nov 2018 15:24:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-4868144397336186032</guid><description>Lambda expression mewakili &lt;i&gt;anonymous function&lt;/i&gt; dan terdiri dari beberapa parameter , lambda operator "-&amp;gt;" (tanda arah panah) dan fungsi &lt;i&gt;body&lt;/i&gt;. contoh formatnya bisa seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{x: Int, y: Int -&amp;gt; x + y}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
ambil contoh pada sebuah list. seperti gambar berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWgAZDV9oC1BgXqeh4RU_1-l5DH2fopBybKO2f2NrIf4xfeAWgPmcwEgCYECTqYTnEPOOV6G7UTDiEgiCfvpc5GitTqQ0M6zVMjOAh26DvTQpLwDkbjql7Gv2HempYgdlXoi4tojYB8ut7/s1600/lambda_in_list_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="152" data-original-width="503" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWgAZDV9oC1BgXqeh4RU_1-l5DH2fopBybKO2f2NrIf4xfeAWgPmcwEgCYECTqYTnEPOOV6G7UTDiEgiCfvpc5GitTqQ0M6zVMjOAh26DvTQpLwDkbjql7Gv2HempYgdlXoi4tojYB8ut7/s1600/lambda_in_list_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
lihat pada bagian forEach, disitulah letak lambda expression. dan jika script diatas dijalankan, maka hasilnya akan seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRz_iMu2_HMHPy_O27N-zoUFezFHRiuDAEkMIigvVmbW1a4oSbZk3xCFvGmgoFsI4NPc9peQxQS7_McpFRP8c6x2pv9dA0Q_vj9EjJJjRLfd7NXlMIkNb_LOdemVTU8jEDh7bP8csagjU4/s1600/result_lambda_in_list_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="118" data-original-width="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRz_iMu2_HMHPy_O27N-zoUFezFHRiuDAEkMIigvVmbW1a4oSbZk3xCFvGmgoFsI4NPc9peQxQS7_McpFRP8c6x2pv9dA0Q_vj9EjJJjRLfd7NXlMIkNb_LOdemVTU8jEDh7bP8csagjU4/s1600/result_lambda_in_list_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
untuk contoh lainnya seperti berikut ini. dan jalankan untuk melihat hasilnya.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2tgtTuXOLmLjKYIN_0dKFOGGGckX-PYSJYfSkrQWgw7CDOOCT6PIgFCYXBFgpV2O8DQ4J6Pc0AnUrxVQA_ScHKe7-8Cney4LsHjbQ-PSrGfQ8l7HOap2tCODAl-i1AvRFceYMuiWGpbe/s1600/lambda_in_val_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="136" data-original-width="345" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2tgtTuXOLmLjKYIN_0dKFOGGGckX-PYSJYfSkrQWgw7CDOOCT6PIgFCYXBFgpV2O8DQ4J6Pc0AnUrxVQA_ScHKe7-8Cney4LsHjbQ-PSrGfQ8l7HOap2tCODAl-i1AvRFceYMuiWGpbe/s1600/lambda_in_val_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
dan berikut karakteristik dari lambda expression&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;diapit dengan kurung kurawal { }&amp;nbsp;&lt;/li&gt;
&lt;li&gt;tidak ada &lt;span style="color: blue;"&gt;fun&lt;/span&gt; keyword seperti function/method&lt;/li&gt;
&lt;li&gt;tidak ada nama &lt;i&gt;function&lt;/i&gt;-nya. &lt;/li&gt;
&lt;li&gt;tidak ada akses modifier (public, private, protected )&lt;/li&gt;
&lt;li&gt;parameternya tidak perlu menggunakan tanda kurung ( )&lt;/li&gt;
&lt;/ul&gt;
Selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWgAZDV9oC1BgXqeh4RU_1-l5DH2fopBybKO2f2NrIf4xfeAWgPmcwEgCYECTqYTnEPOOV6G7UTDiEgiCfvpc5GitTqQ0M6zVMjOAh26DvTQpLwDkbjql7Gv2HempYgdlXoi4tojYB8ut7/s72-c/lambda_in_list_kotlin.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Higher-Order Function pada Kotlin</title><link>http://yoesuv.blogspot.com/2018/11/higher-order-function-pada-kotlin.html</link><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Thu, 1 Nov 2018 15:41:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-8131082642936748960</guid><description>&lt;a href="https://kotlinlang.org/docs/reference/lambdas.html" target="_blank"&gt;Higher-Order Function&lt;/a&gt; adalah sebuah fungsi/method yang bisa digunakan sebagai parameter pada sebuah fungsi/method lainnya.&lt;br /&gt;
&lt;br /&gt;
langsung saja ke contoh. misal membuat fungsi untuk memfilter sebuah list.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYP2VcJm7hBM6oUgRJ5sRHaNk_mkU8dmkv9EYRFxXpJMWDwi3U2z1_gdkTAbxB5k7dLbpR7DltWJauPn_yHSIgTv-T_UmVeqbALqzQUo2zck-8zCQHrFfjuSw4EWp90Yplfpl6V0x_t5a/s1600/higher_function_in_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="173" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYP2VcJm7hBM6oUgRJ5sRHaNk_mkU8dmkv9EYRFxXpJMWDwi3U2z1_gdkTAbxB5k7dLbpR7DltWJauPn_yHSIgTv-T_UmVeqbALqzQUo2zck-8zCQHrFfjuSw4EWp90Yplfpl6V0x_t5a/s640/higher_function_in_kotlin.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
keterangan dari higher function diatas yaitu digunakan untuk tipe MutableList, nama fungsinya filterList dan ada fungsi pada saat kondisi dengan type boolean. dan return dari higher function ini adalah MutableList juga.&lt;br /&gt;
&lt;br /&gt;
berikut contoh penggunaanya. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhePnxHkslobEvaIbyG89TmqyoG-Rez56nTO1MskTNRoFLPsPPLHCJ0NjErP3j8WQLG9KprUPiJCqPQQWUbzDs3E3oDWWY340yTy5IJOc5IemGtyEo-H5UUTdvpBYKL8p9S6f6bu36aMT-H/s1600/result_higher_function_in_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="282" data-original-width="529" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhePnxHkslobEvaIbyG89TmqyoG-Rez56nTO1MskTNRoFLPsPPLHCJ0NjErP3j8WQLG9KprUPiJCqPQQWUbzDs3E3oDWWY340yTy5IJOc5IemGtyEo-H5UUTdvpBYKL8p9S6f6bu36aMT-H/s1600/result_higher_function_in_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
jadi ada sebuah list yang isinya nama, kemudian dari list itu di filter dengan higher function yang telah dibuat sebelumnya yaitu filterList, tentunya dengan kondisi misalnya list &lt;i&gt;contains&lt;/i&gt; nama tertentu. cukup mudah bukan?&lt;br /&gt;
&lt;br /&gt;
jika dijalankan code diatas maka hasilnya akan seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwtPBXLafi8gyaH9OSFj8tkaHmo1v26lIfkN2oHytVx9GH4oLsERZZAnjjSY3udnpTiERrtEH1sy36x_1kuykSXjI34kbcnofiBdT_V2AnrYa7aWqtrjo_iaXajdYrg9pA7nzehfjypQRm/s1600/result_example_higher_function_in_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="101" data-original-width="353" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwtPBXLafi8gyaH9OSFj8tkaHmo1v26lIfkN2oHytVx9GH4oLsERZZAnjjSY3udnpTiERrtEH1sy36x_1kuykSXjI34kbcnofiBdT_V2AnrYa7aWqtrjo_iaXajdYrg9pA7nzehfjypQRm/s1600/result_example_higher_function_in_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYP2VcJm7hBM6oUgRJ5sRHaNk_mkU8dmkv9EYRFxXpJMWDwi3U2z1_gdkTAbxB5k7dLbpR7DltWJauPn_yHSIgTv-T_UmVeqbALqzQUo2zck-8zCQHrFfjuSw4EWp90Yplfpl6V0x_t5a/s72-c/higher_function_in_kotlin.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Interface pada Kotlin</title><link>http://yoesuv.blogspot.com/2018/10/interface-pada-kotlin.html</link><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 31 Oct 2018 11:02:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-7014807912422466724</guid><description>pada kotlin untuk mendeklarasikan sebuah interface menggunakan keyword &lt;span style="color: blue;"&gt;interface&lt;/span&gt;. isinya bisa berupa &lt;i&gt;function/method&lt;/i&gt; dan variabel. langsung saja ke contoh pembuatan interface.&lt;br /&gt;
&lt;br /&gt;
pertama buat interface seperti berikut.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjnmW2iD818F8wjRU-HjUtX15gZQplGOFHtV2cdQReMl1JIogBt7uY4xPZWiCuYLBS2EJF9BRmhETYuV6OAp29FqP_WvV_FxZycXy6bdNRoHZOq_kM9vPOJ1OfQI6KqhyBdFnEc2fP5EIA/s1600/interface_in_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="133" data-original-width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjnmW2iD818F8wjRU-HjUtX15gZQplGOFHtV2cdQReMl1JIogBt7uY4xPZWiCuYLBS2EJF9BRmhETYuV6OAp29FqP_WvV_FxZycXy6bdNRoHZOq_kM9vPOJ1OfQI6KqhyBdFnEc2fP5EIA/s1600/interface_in_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
sekarang interface tersebut akan dipakai di class Orang seperti berikut ini. jika function setData dijalankan maka akan interface juga akan dijalankan.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgd66BwuTSmQH3DxOKdBAK0gq00JjjZCYX5Hj4lvgT5SjMESrUm7W8iF5azKXJJ2XJFP9VAjOKaX3m1mJPEZYTLF-cvbPJdqroauaIsqBTfI8STaQzRZK0kpwKwTyymD9VX3r4wEttdnjW/s1600/interface_usages_in_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="203" data-original-width="455" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgd66BwuTSmQH3DxOKdBAK0gq00JjjZCYX5Hj4lvgT5SjMESrUm7W8iF5azKXJJ2XJFP9VAjOKaX3m1mJPEZYTLF-cvbPJdqroauaIsqBTfI8STaQzRZK0kpwKwTyymD9VX3r4wEttdnjW/s1600/interface_usages_in_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
persiapan selesai sekarang interface tersebut siap di implementasikan. buat class Mahasiswa seperti berikut ini. jangan lupa &lt;i&gt;implements&lt;/i&gt; interfacenya, pada kotlin memakai tanda "&lt;span style="color: blue;"&gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;". nantinya &lt;i&gt;function/method&lt;/i&gt; pada interface akan minta di implementasikan ke dalam class Mahasiswanya.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvi8Ad7BjPG8LQoL_vu3IEY5OJGCGjUA7XNlRDfg5XK117yvmvbz0wrgRiSDDlBn8z2biN2FbHHWCHdA2OJkcKTXPFsbOMSk-1OBTireWw4MoN8Xc72c0NIXt_E8X2OxpeWvr73KVJk6hf/s1600/interface_implements_in_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="287" data-original-width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvi8Ad7BjPG8LQoL_vu3IEY5OJGCGjUA7XNlRDfg5XK117yvmvbz0wrgRiSDDlBn8z2biN2FbHHWCHdA2OJkcKTXPFsbOMSk-1OBTireWw4MoN8Xc72c0NIXt_E8X2OxpeWvr73KVJk6hf/s1600/interface_implements_in_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
joss, tinggal dicoba. buat object class Mahasiswa dan jalankan &lt;i&gt;function/method&lt;/i&gt; nya.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy53IDWPSPGi_8XCJSlUnEe30lhCc6P3YsmScLD3AbW-lwd3h808z7Oyn36z6agaazpaNJlRkC5YkG8IJu6HIUjgx80aTiN-LIpK6Vuth6E-RpS5sazSiwgeAdm3YpoLBs6ohriB40qCH9/s1600/fun_main_example_interface_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="84" data-original-width="455" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy53IDWPSPGi_8XCJSlUnEe30lhCc6P3YsmScLD3AbW-lwd3h808z7Oyn36z6agaazpaNJlRkC5YkG8IJu6HIUjgx80aTiN-LIpK6Vuth6E-RpS5sazSiwgeAdm3YpoLBs6ohriB40qCH9/s1600/fun_main_example_interface_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
jika dijalankan maka hasilnya akan seperti berikut ini. bisa dikatakan fungsi interface disini adalah untuk mentransfer data dari class Orang ke Mahasiswa melalui &lt;i&gt;function/method&lt;/i&gt; yang ada di dalamnya. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpaP1wsU2EPzoTJlY8GhENJsgTtbqhR9aHySf8rJS1gZMQyZvTNxywILWfHmMNLtToBlHrFwLTZbopuhnk0XSZmuhjDju2PvmG2OFFFlHAF-c5yjFwp82V4XugpcqumKAOjSQRBbJ8gRVQ/s1600/result_example_interface_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="93" data-original-width="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpaP1wsU2EPzoTJlY8GhENJsgTtbqhR9aHySf8rJS1gZMQyZvTNxywILWfHmMNLtToBlHrFwLTZbopuhnk0XSZmuhjDju2PvmG2OFFFlHAF-c5yjFwp82V4XugpcqumKAOjSQRBbJ8gRVQ/s1600/result_example_interface_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjnmW2iD818F8wjRU-HjUtX15gZQplGOFHtV2cdQReMl1JIogBt7uY4xPZWiCuYLBS2EJF9BRmhETYuV6OAp29FqP_WvV_FxZycXy6bdNRoHZOq_kM9vPOJ1OfQI6KqhyBdFnEc2fP5EIA/s72-c/interface_in_kotlin.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Abstract Class pada Kotlin</title><link>http://yoesuv.blogspot.com/2018/10/abstract-class-pada-kotlin.html</link><category>Kotlin</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 30 Oct 2018 16:05:00 +0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1034055554569285267.post-8856155418112138645</guid><description>Abstract class pada kotlin juga di deklarasikan dengan keyword &lt;span style="color: blue;"&gt;abstract&lt;/span&gt;. pada contoh kali ini dibuat abstract class Pegawai yang isinya fungsi menampilkan nama lengkap dan perhitungan gaji (sesuai dengan penggunaan abstract class yaitu berisi fungsi-fungsi yang nantinya siap dipakai saat di implementasikan).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyWPh4F885qRh2QqrBZuYsnkHjGKob2TZtZ5aypIiKHBV8GdliRuavjI4tWH-Xu37a9E7PhzLhVvRu97z5-EYTci2BDD6fo_slF7Ty5vfHxxh8iirLcci5VjS0Mdbq3aFhqh4q0xToGyPm/s1600/abstract_class_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="172" data-original-width="522" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyWPh4F885qRh2QqrBZuYsnkHjGKob2TZtZ5aypIiKHBV8GdliRuavjI4tWH-Xu37a9E7PhzLhVvRu97z5-EYTci2BDD6fo_slF7Ty5vfHxxh8iirLcci5VjS0Mdbq3aFhqh4q0xToGyPm/s1600/abstract_class_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
tentu sudah pada tahu kalau kelas abstract ini tidak bisa dipakai/ dibuat object langsung. maka harus di implementasikan ke dalam class. contoh seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8yfzBgqi1yJPZnChBXPI8IXI4ga9S1vLCnF7uVqwWAmre7K_KmfdbGVGcZOOQyb8oNOsQO8RbQLnmljJtBRocrg_y4rbyShv5hD0N19VEAeyhyphenhyphen7MkyYrPUc8U1m1XztoCh7MJ-JEk8YPj/s1600/abstract_class_implementation_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="80" data-original-width="729" height="60" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8yfzBgqi1yJPZnChBXPI8IXI4ga9S1vLCnF7uVqwWAmre7K_KmfdbGVGcZOOQyb8oNOsQO8RbQLnmljJtBRocrg_y4rbyShv5hD0N19VEAeyhyphenhyphen7MkyYrPUc8U1m1XztoCh7MJ-JEk8YPj/s640/abstract_class_implementation_kotlin.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
mantab, sekarang class Manager dan Direktur siap digunakan. Main class seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO0oT8eojxnIF1206EJEd9cogGk6aTp6dy8GPG3fCx07uOeaI09rhRXFJuQhIR8w4Hi5797Y2vmHcOSiPw2eR0C_UxLFPnnH_PCA8aqmq6Rdoy8v8-aDmRyWBVmgs1K4_0OFYVfKt2on1J/s1600/main_abstract_class_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="195" data-original-width="615" height="170" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO0oT8eojxnIF1206EJEd9cogGk6aTp6dy8GPG3fCx07uOeaI09rhRXFJuQhIR8w4Hi5797Y2vmHcOSiPw2eR0C_UxLFPnnH_PCA8aqmq6Rdoy8v8-aDmRyWBVmgs1K4_0OFYVfKt2on1J/s640/main_abstract_class_kotlin.png" width="540" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
jika dijalankan maka hasilnya akan seperti berikut ini.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0cOJosmVtFP7Tk9n358JvlatiPE_19FUFLRH-vaJX6l9hWvuq3bl2OYsq81NYudGRom9uV4Z9CCmxgPSnplV9VPHLfMWWKdokh7DX0Z1RzYqdE6RmZi5_15RFMsDpnnW_5xAZw_mMLZOI/s1600/result_abstract_class_kotlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="133" data-original-width="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0cOJosmVtFP7Tk9n358JvlatiPE_19FUFLRH-vaJX6l9hWvuq3bl2OYsq81NYudGRom9uV4Z9CCmxgPSnplV9VPHLfMWWKdokh7DX0Z1RzYqdE6RmZi5_15RFMsDpnnW_5xAZw_mMLZOI/s1600/result_abstract_class_kotlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
selamat mencoba.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyWPh4F885qRh2QqrBZuYsnkHjGKob2TZtZ5aypIiKHBV8GdliRuavjI4tWH-Xu37a9E7PhzLhVvRu97z5-EYTci2BDD6fo_slF7Ty5vfHxxh8iirLcci5VjS0Mdbq3aFhqh4q0xToGyPm/s72-c/abstract_class_kotlin.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>