AndroidGenelKotlinYazılım

KOTLIN Interface’den Nesne Oluşturmak

Merhaba,
Bu yazımda sizlere Kotlin de bir interface’de belirlenen metoda erişim için gerekli olan object oluşturma işleminden bahsedeceğim. Birçok yazılım dilinde alışık olduğumuz bir syntax vardı. Eğer bir interface’e ve içerisindeki metoda ulaşmak istiyorsak öncelikle bu interface’i implement ediyor ve override ederek metodu kullanıyorduk. Yine override ederek kullancağız fakat Kotlin burada hem syntax olarak hem de okunma ve kullanım olarak çok güzel bir yöntem sunuyor bize.

Interface | IMusteriListesiCallBack : Müşteri listesini çeken bir web servisimiz olsun. Bu işlem tamamlandığında listemize verileri getirecek olan Interface metodu bu interface’den override edilecek.

interface IMusteriListesiCallBack {
   fun responseListe(durum:Boolean, musteriListesi:ArrayList<String>, strMesaj:String) 
}

MainActivity.kt : MainActivity içerisinde bu interfaceden bir nesne oluşturalım ve içerisindeki metodu override edelim. 

class MainActivity : AppCompatActivity(){
   
   override fun onCreate(savedInstanceState: Bundle?){
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      musteriListesi()      
   }

   private fun musteriListesi(){
      
      //öncelikle call back metoduna erişmek için nesnemizi oluşturduk.
      val mListeCallBack = object: IMusteriListesiCallBack{
         
         override fun responseListe(durum:Boolean, musteriListesi:ArrayList<String>, strMesaj:String){
             //gelen verileri burada kullanabiliriz.
         }
      }
//      Bu işlemlere cevap oluşturacak Webservis metodumuzu çalıştıralım ve işlem tamamlandığında buraya bir          //      cevap döndürmesini bekleyelim.
      WebServis.wsMusteriListesi(baseContext, mListeCallBack)

   }


}

WebServis.kt içerisinde örnek bir wsMusteriListesi metodu..

fun wsMusteriListesi(context: Context,  callBack: IMusteriListesiCallBack) {
            val musteriler: ArrayList<String> = java.util.ArrayList()
            var _URL = "http://......."
            val jsonRequest = object : StringRequest(Request.Method.POST,
                    _URL,
                    Response.Listener<String> { s ->
                        try {
                            val obj = JSONObject(s)
                            if (obj.getBoolean("sonuc")) {
                                val array = obj.getJSONArray("veri")

                                for (i in 0..array.length() - 1) {
                                    val objectArtist = array.getJSONObject(i)
                                    musteriler.add(objectArtist.getString("musteriadi"))
                                }
                                callBack.responseListe(obj.getBoolean("sonuc"),musteriler, obj.getString("mesaj"))
                            } else {
                                callBack.responseListe(obj.getBoolean("sonuc"),musteriler, obj.getString("mesaj"))
                            }
                        } catch (e:JSONException) {
                            e.printStackTrace()
                        }
                    }, Response.ErrorListener { volleyError -> Toast.makeText(context, volleyError.message, Toast.LENGTH_LONG).show() })
            {
                override fun getParams(): Map<String, String> {}
            }

            val requestQueue = Volley.newRequestQueue(context)
            requestQueue.add<String>(jsonRequest)
        }

Bu işlemler sonucunda Interface’den türettiğimiz object bize işlem bittiğinde bir call back oluşturmuş oldu. Örneğin veri çektik ve işlem tamamlandığında verileri RcyclerView’e gönderebiliriz.

Aynı zamanda bir sınıf içerisinde birden fazla object oluşturarak faklı işlemler için tek Interface’i kullanabiliriz. Bu sayede daha az kod daha çok iş yapabiliriz. Soru ve görüşleriniz için ogzhnozdmr@gmail.com

Oğuzhan ÖZDEMİR

19 Ocak 1991 Bursa doğumlu Bilgisayar Mühendisiyim. Codeigniter, Kotlin, Android, MySQL ve iOS uygulamalar geliştiriyorum. Web kısmında CSS, HTML, JavaScript, jQuery konularına hakimim. Mayıs 2017 tarihinde Maltepe/İstanbul oradan da Çorlu /Tekirdağ'a giderek askerlik görevimi tamamladım. 2018 Mayıs ayında Bursa'da Durmazlar Makina Sanayi ve Tic. A.Ş. firmasında Bilgi Teknolojileri Uzman Yardımcısı olarak işe başladım. İletişim: ogzhnozdmr@gmail.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.