Rss Reader Uygulaması (AsyncTask)

Merhaba Arkadaşlar

Bu yazımda sizlerle uygulamalarımıza RSS Reader özelliği nasıl kazandırabiliriz sorusunun cevabını paylaşacağım. İsterseniz önce RSS nedir ne değildir biraz bundan bahsedelim. RSS, internet siteleri tarafından yayınlanan haber vb. içeriğin tek bir ortamdan topluca izlenebilmesine olanak sağlayan bir içerik besleme yöntemidir. RSSReal Simple Syndication, RDF Site Summary veya Rich Site Summary (Zengin Site Özeti) kelimelerinin baş harflerinden oluşan kısaltmadır. XML biçiminde olan RSS dosyaları ilk olarak NetScape firması tarafından geliştirilmeye başlanmıştır.

Biz bu sistemi Android uygulamamızda kullanacağız. Bu blog içerisinde bulunan yazıları RSS Reader yardımıyla ListView ile uygulamada göstereceğiz. Ardından listenin her bir satırına dokununca o yazıyı cihazın kendi tarayıcısında gösterilmesini sağlayacağız. Uygulamamızda sınıf içerisinde sınıf kullanacağız. İkinci sınıf olarak arkaplan işlerinde bize çok yardımı olan AsyncTask sınıfını kullanacağız.

Bu bloğun RSS kısmını kullanacağız. Linke tıklayıp gördüğünüz gibi xml formatında yazılar bize sunulmuş. Şimdi bunu uygulamamızda nasıl kullanacağımızı görelim. Bize içerisinde yazının başlığı ve yazının linkini Arraylist olarak döndüren, RSS Reader işlemini gerçekleştiren metodları görelim. Metodları isimleri getListFromXML ve getLinkFromXml olsun. Metodlarımızın son hali şöyle olacak.

getListFromXML

 

getLinkFromXml

Şimdi daha önce anlattığım gibi bir Custom Adapter sınıfı oluşturuyoruz. Sınıfımız şöyle olacak.

CustomAdapter

Ana Activity içerisinde bir sınıf daha oluşturalım. İsmi  BackgroundProcesses olsun. Bu sınıfa AsyncTask sınıfını extend edelim ve biraz bu sınıfı anlatalım. AsyncTask extend edilmiş sınıflarda doInBackground metodu bulunması zorunludur ve arka planda gerçekleştirilecek bütün işlemler bu metod içerisinde yazılır. Diğer metodlara da ufaktan değinirsek;

  • onPreExecute: Arka plan işlemi başlamadan önce ön yüzde değiştirilmesi istenen istenilenleri yani değişken atamaları yapılır ve ProgressBar ile “Yükleniyor” tarzı bildirimler yapılır.
  • onPostExecute: doInBackground metodu tamamlandıktan sonra işlemlerin sonucu bu metoda result değişkeni ile gönderilir. Arka plandaki işlemden gelen bir veri ön yüzde gösterilmek isteniyorsa bu metod kullanılır.
  • onProgressUpdate: Eğer doInBackground metodu içerisinde yaptığınız işlemin ilerleme durumunu (örneğin RSS okuma) kullanıcıya bildirmek istiyorsanız bu metodu kullanabilirsiniz.
  • onCancelled: Eğer herhangi bir sebepten dolayı AsyncTask iptal edilirse bu metod uyarılır.

Şimdi BackgroundProcesses sınıfımızın son halini görelim.

Ana_Activity

onCreate metodu ile listenin her bir satırına tıklayınca yazıyı uygulamanın tarayıcısı üzerinden açalım.

onCreate

Artık her şey hazır. Şimdi uygulamamızı çalıştırıp görelim.

Screenshot from 2014-09-09 16:50:42     Screenshot from 2014-09-09 16:49:13     Screenshot from 2014-09-09 16:50:13

Uygulamamızın tüm kaynak kodlarına buradan ulaşabilir ve indirebilirsiniz.

Android’i bol günler…

Action Bar Kullanımı – 2 (ViewPager)

Merhaba Arkadaşlar

Sizlerle Action Bar konusuna değindiğimiz 2. yazımı paylaşacağım. Yazımızda Action Bar ile birlikte ViewPager kullanımından bahsedeceğim. ViewPager, kaba tabir ile ekranı y ekseni üzerinde kaydırdığımız zaman farklı bir sayfa görüntülememizi sağlayan yapıdır. Örnek uygulama olarak 3 farklı Fragment extend edilmiş sayfa tanımlayıp göstereceğiz.

İlk olarak ana layout dosyamıza bir ViewPager tanımlamalıyız. activity_my.xml dosyamızın son hali şöyle olacak.

activity_my

Şimdi ViewPager üzerinde göstereceğimiz Fragment dosyalarımızı tanımlayalım. Ben sadece ilk Fragment sınıfımızı ve bu sınıfın layout dosyasını göstereceğim.

Layout dosyaları içerisinde “First Fragment” tarzı bir bir text içeren TextView olması yeterli olacaktır. Fragment sınıfında ise View değeri döndüren onCreateView metodu içerinden layout dosyamızı çağırmamız yeterli olacaktır. Sınıfımızın görüntüsü şöyle olacak.

FirstPage

Burada sınıfımıza Fragment sınıfını extend ediyoruz. Ayrıca onCreateView metodu içerisinde daha önce değindiğimiz layout dosyası çağırma işlemini gerçekleştiriyoruz. Geri kalan sayfalar içinde aynı adımları takip ediyoruz.

Sayfalarımızı ayarladığımıza göre şimdi sayfalar ile Ana Activity arasında bağlantıyı sağlayacak TabsPager sınıfımızı yazalım. Öncelikle TabsPager sınıfımıza  FragmentPagerAdapter sınıfını extend ediyoruz. Ardından Fragment türünden değer döndüren getItem metodu içerisinde gelen position değerine göre sayfa gösterilmesini sağlıyoruz. Son olarak Integer değer olarak sayfa sayısını döndüren getCount metodunu yazıyoruz. TabsPager sınıfımızın son hali şöyle olacak.

TabsPager

Eveeet şimdi geldik Ana Activity kısmına. Öncelikle activity dosyamıza  ActionBar.TabListener sınıfını implements ediyoruz. Bu işlemi yaptıktan sonra alınan hata akabinde UnImplement metodları uygulamamıza dahil ediyoruz.

Yapılan işlemleri yorum satırı olarak belirttiğim Ana Activity sınıfımızın son görüntüsü şöyle olacaktır.

AnaActivity_1

Yukarıda yapılan atama ve tanımlamalardan sonra şimdi setOnPageChangeListener ile  tablar arasındaki geçişleri dinleyelim.

AnaActivity_2

Son olarak implement ettiğimiz metodlardan olan onTabSelected metodu içerisinde kaydırma işleminde güncel veriyi gösteriyoruz.

AnaActivity_3

Şimdi uygulamamızı çalıştırıp görelim.

app1     app2     app3

Uygulamamızın tüm kaynak kodlarına buradan ulaşabilir ve indirebilirsiniz.

Android’i bol günler…

Action Bar Kullanımı – 1

Merhaba Arkadaşlar

Bu yazımda sizlere Action Bar temel özelliklerinden bahsedeceğim. Ayrıca Action Bar ile ilgili basit bir giriş örneği yapacağım. Action Bar konusun 2-3 yazı ile işlemeyi düşünüyorum. Öncelikle ActionBar nedir ondan bahsedelim. Action Bar uygulamamızın en üst yada en altında yer alan içinde action itemlerin, activity başlığının, activity iconunun yer aldığı bir View’dır.IOS taki NavigationController olarakta tanımlayabiliriz.

android-action-bar-overview1

Yukarıda bahsettiğimiz gibi ActionBar temel olarak 4 ana işlevsel alan barındırır. Bunlar app icon, view control, action buttons ve overflow icon olarak isimlendirilmektedir.Bu kısımları tanıtacak olursak eğer;

App Icon: Uygulamaya ait ikon veya logonun yer aldığı bölümdür.

View Control: Uygulama başlığına ayrılmış alandır.

Action Buttons: Uygulamaya ait bazı önemli işlemlerin eklendiği alandır.

Action Overflow: Tüm önemsiz eylem bir menü olarak gösterilir.

Action Bar için bir başka detay ise Android 3.0 (Honeycomb) sürümü ve sonrası için kullanımı yaygındır. Ama Android 3.0 sürümünün altındaki sürümlerde kullanmak isteyenler Android Support Library projelerine dahil etmeleri gerekmektedir.

Action Bar temel özelliklerinden bahsettikten sonra şimdi uygulamamıza gelelim. Uygulamamızda kullanacağımız iconlara ulaşmak için buradan Action Bar Icon Pack dosyasını indirmeliyiz.

Ardından projemizi oluşturuyoruz. Android Studio her zaman bize default olarak 3 metodu hazır olarak veriyor. Bunlar onCreate,  onCreateOptionsMenu, onOptionsItemSelected metodlarıdır.  onCreateOptionsMenu metodu içerisinde Action Bar menü tasarımımızı ekranda göstereceğiz. Bunun için res > menu > my.xml yolunu takip edip dosyamızı açıyoruz. Action Bar da göstermek istediğimiz herhangi 2 buton için icon seçip copy-paste yoluyla uygulamaya dahil ediyoruz. Ardından bu buttonları item olarak dosyamıza dahil ediyoruz. Dosyamızın son hali şöyle olacak.

Screenshot from 2014-09-01 18:13:10

Peki butonlar oluştu diyelim. Tıklayınca vereceği tepkiler için onClick gibi metodlar mı kullanmalıyız sorusu gelmiştir aklınıza tabiki. Bu aşamada vereceğim cevap hayır olacaktır. Çünkü onOptionsItemSelected metodu içerisinde bu işlem yapılacak. Burada MenuItem parametresinin id değeri koşul kabul ederek if-else yapısı ile butonun click durumunu değerlendirebiliriz. Metodlarımızın son durumu şöyle olacak.

Screenshot from 2014-09-01 18:22:43

Şimdi uygulamamızı çalıştırıp menü tasarımımıza bir göz atalım.

Screenshot from 2014-09-01 18:25:02     Screenshot from 2014-09-01 18:29:39     Screenshot from 2014-09-01 18:29:59

Action Bar konusunun ilk halkasını anlattık. Bir sonraki yazımda Action Bar ile TabsPager kullanımından bahsedeceğim.

NOT: İlk resmi aldığım site Androidhive hem konu anlatımı hemde örnek uygulama açısından size çok yararlı olacaktır.

Uygulamamızın tüm kaynak kodlarına buradan ulaşabilir ve indirebilirsiniz.

Android’i bol günler…

Uygulamayı İmzalama, Paketleme ve Yeni Sürüm Yayınlama

Merhaba Arkadaşlar

Aldığım bir istek üzerine bu yazımda sizlere Android uygulamalarının imzalanıp paketlenmesi ve yeni bir sürüm yayınlamak istendiğinde neler yapılması gerektiğinden bahsedeceğim.

Uygulama imzalama ve paketleme konusunda Android Studio bize çok kolaylık sağlıyor. Bu işlemin iki basit yolu var. Birincisi Build >> Generate Signed Apk yolunu takip ederek oluşturabiliriz. İkinci yol ise uygulamayı her çalıştırdığımızda Android Studio bizim için bu işlemi gerçekleştirir. .apk uzantılı dosyamıza ulaşmak için Android Studio Projelerinin bulunduğu dosyadan uygulamamızın klasörüne giriyoruz. Ardından app > build > outputs > apk yolunu takip ederek uygulamanın apk dosyasına ulaşıyoruz.

Peki diyelim ki uygulamanın yeni sürümünü çıkarmak istiyoruz. Bunun içinde Android Studio iki satır değiştirmemizi yeterli buluyor. Bunu  bir örnek ile anlatalım. Mesele son yaptığımız Android SQLite Example uygulaması üzerinden gidelim.

Screenshot from 2014-08-31 15:11:37

Gördüğünüz gibi uygulama sürümü 1.0 olarak görünüyor. Şimdi Android Studio içerisinden app >> build.gradle dosyamıza giriyoruz.

Screenshot from 2014-08-31 15:14:30

Bu dosya içerisinde gördüğünüz versionCode ve versionName değişkenleri üzerinde aşağıdaki değişiklikleri yapıyoruz.

versionCode 2
versionName “1.1” 

Ardından sağ üst köşede beliren Sync Now kısmına tıklayarak bu kısmı uygulamamıza dahil ediyoruz. Bu kısım bizi biraz bekletebilir. Hareketlenme sona erdikten sonra uygulama detaylarına girildiğinde versiyon kısmının değiştiğini göreceksiniz.

Screenshot from 2014-08-31 15:23:56

Gördüğünüz gibi Android Studio içerisinde bir çok kolaylık mevcut 🙂

Android’i bol günler…

 

Android SQLite Veritabanı Kullanımı

Merhaba Arkadaşlar

Bu yazımda sizlere “SQLite veritabanı nedir ve SQLite veritabanı kullanımından bahsedeceğim.Bilindiğiniz üzere çoğu uygulamada verilerin bir yerlerde depolanması gerekiyor. Bunun en iyi yolunun veritabanı olduğu görünen köy misali bellidir. Öncelikle sizler için SQLite veritabanına değinmek istiyorum.

SQLite Nedir ?

Kullanımı çok basit, uygulama içerisinde az yer kaplayan ve mobil cihazlarda rahatlıkta kullanılabilen açık kaynak kodlu ve işletim sisteminden bağımsız bir veritabanı kütüphanesi ve motorudur. SQLite, onlarca programlama dili ile kullanılabilir. Az yer kaplaması ve istenilen hızda veri işlemleri yapabilmesi tercih sebepleri arasındadır.SQLite veritabanında tarafından desteklenen text,numeric,integer,real ve none veri tipleri mevcuttur.

Şimdi birazda uygulamamızdan bahsedelim. Örnek uygulama olarak basit bir kütüphane otomasyonu yapacağız. Kitabın adı,yazarı,basım yılı ve fiyatı gibi değerleri veritabanımızda tutacağız. Bu değerler üzerinden CRUD(Create, Read, Update, Delete) işlemler gerçekleştireceğiz.

NOT: Uygulamamızda Action Bar kullandığımızdan MinSDK olarak 11 (Android 3.0) seçilmelidir. Action Bar konusu ileride detaylı bir şekilde anlatılacaktır.

Şimdi uygulamamızın arayüz kısmını tasarlayalım. Öncelikle kayıtlı verilerimizi liste halinde göstermek ve tıklayınca kitap detaylarını görüntülemek için activity_main.xml dosyamıza ListView atıyoruz. Daha sonra veri ekleyebileceğimiz bir layout oluşturuyoruz. Dosyamızın ismi activity_kitapekle.xml olacak. Layout görüntüsü söyle olacak.

kitapeklelayout

Kitap ekleme kısmına gidebilmek için Action Bar menüsüne bazı eklemeler yapmamız gerekiyor. Bunun için res > menu > my.xml yolunu takip ediyoruz. Burada menüye bir item ekliyoruz. Item simgesi için buradan Action Bar Icon Pack dosyasını indirip içerisinden bir simge seçiyoruz. Action Bar menü kısmı şöyle olacak.

actionmenu

Bir diğer layout dosyamız kitap bilgilerini düzenlemek için kullandığımız kısma ait olacak. Dosyamızın ismi activity_kitapduzenle.xml olacak. Layout dosyamızın son hali şöyle olacak.

kitapduzenlelayout

Son layout dosyamızda ise kitap detaylarını gösterip, kitabın silinme ve güncellenme isteklerini alacağız.Dosyamızın ismi activity_kitapdetay.xml olacak.

kitapdetaylayout

Arayüz kısmını hallettikten sonra uygulamamızın arka plan kısmına gelelim. İlk önce Database isminde bir sınıf oluşturuyoruz ve bu sınıfa SQLiteOpenHelper sınıfını extend ediyoruz. Android SDK, SQLiteOpenHelper sınıfı üzerinden SQLite ile ilgili işlemlerde bize yardımcı olacaktır. Ardından sabitlerimizi ve constructor metodumuzu oluşturuyoruz.

Screenshot from 2014-08-31 12:12:06

Ardında onCreate metodu içerisinde, uygulamamız ilk çalıştığında veritabanı tablo oluşturmasını sağlıyoruz. Burada daha önce oluşturduğumuz sabitleri kullanıyoruz.Id değerini oluştururken AUTOINCREMENT olmasına dikkat etmemiz gerekiyor. Bu sayede bizim müdahale etmemize gerek kalmadan değer atanabilecek.

Screenshot from 2014-08-31 12:17:03

Şimdide sıra az çok sql ile uğraşan herkesin mantığını bildiği işlemleri yapmaya geldi. Önce kitap silme ve ekleme işlemlerini yapacak fonksiyonları yazıyoruz.

Screenshot from 2014-08-31 12:23:11

İki fonksiyonda da önce getWritableDatabase() metodu ile veritabanını yazılabilir hale getiriyoruz. Silme fonksiyonunda içerisinde delete fonksiyonu ile gerekli query string değerini yazarak id değerine göre silme işlemini gerçekleştiriyoruz. Kitap ekleme kısmında da içerik değerlerini kaydetmek için HashMap formatında çalışan ContentValues objesi oluşturuyoruz. Bu obje içerisine sabit değerlerine göre aldığımız parametreleri gönderiyoruz. SQLiteOpenHelper içerisinde hazır insert metodunu kullanarak kitap ekleme işlemimizi tamamlıyoruz.

Şimdide kitap detaylarını bir HashMap olarak tutan fonksiyonu yazalım.

Screenshot from 2014-08-31 12:37:04

Kitap isimlerini uygulamanın girişinde liste halinde göstermek için Arraylist türünden veri döndüren fonksiyonumuzu yazıyoruz.

Screenshot from 2014-08-31 12:39:38

Bu iki fonksiyondaki Cursor objesi gönderilen query değerine göre istenilen verileri tutmaya yarıyor. Bizde kendi isteğimize göre bu verileri yönlendirebiliyoruz.

Son olarak kitap güncelleme fonksiyonumuzu oluşturarak veritabanı işlemlerini sonlandırıyoruz.

Screenshot from 2014-08-31 12:44:42

Veritabanı işlemleri bu kadar. Bundan sonrasında bu fonksiyonlar yardımıyla gerekli ekleme, silme, görüntüleme ve güncelleme işlemlerini yapabiliriz.

Uygulamamızın tüm kaynak kodlarına buradan ulaşabilir ve indirebilirsiniz.

Android’i bol günler…

WebView Kullanımı

Merhaba Arkadaşlar

Bu yazımda sizlere kullanıcıyı uygulamayı kapatmadan bir web sitesine yönlendirmemize yarayan WebView kullanımından bahsedeceğim.WebView, Android telefonunuzun içinde yer alan web tarayıcısı gibidir ve siteleri HTML5 uyumlu derleyicisiyle kullanıcıya gösterir. Android tarayıcısı WebKit derleyicisini kullanmaktadır. Dolayısıyla WebView’de WebKit destekli bir tarayıcı gibi davranmaktadır.

Örnek uygulamamıza gelecek olursak eğer uygulamamızda ana activity de bir ImageView bulunduruyoruz. Bu ImageView e tıkladığınız zaman yeni activity içerisinde web sayfasını görüntüleyeceğiz.OpenWebPage isminde bir proje oluşturuyoruz. Öncelikle ana activity içerindeki yerleşimi görelim.

activity_my

ImageView içerisinde onClick metodunu tanımlamayı unutmuyoruz. Şimdi web sayfasını göstereceğimiz activity için layout dosyamızı oluşturalım. Dosyamızın adı internet.xml olacak. İçerisine bir adet WebView yerleştireceğiz.

internetxml

Uygulama yerleşimlerini hallettikten sonra şimdi uygulamamızın Java kısmına gelelim. Web sitesini gösterebilmek için SayfaAcma adında activity oluşturuyoruz. Bu activity nin layout dosyası olarak internet.xml dosyasını belirliyoruz. onCreate metodu içerisinde önce findViewById metodu ile WebView ı çağırıyoruz. Ardından webview nesnesine setJavaScriptEnable metoduyla WebView üzerinden görüntülenecek sayfalardaki Javascript kodlarının çalıştırılmasını onay veriyoruz. Son olarak loadUrl metodunda gitmek istediğimiz adresi belirliyoruz. Bu işlemleri yaptıktan sonra ProgressDialog ile “sayfa yükleniyor” tarzında bir mesaj gösteriyoruz. SayfaAcma activity miz şekildeki gibi olacak.

SayfaAcma

Gelelim Ana Activity dosyamıza. Burada onCreate içerisinde ImageView nesnemizi findViewById metodu ile çağırıyoruz. Ardından ImageView içerisinde tanımladığımız onClick metodunu yazıyoruz. Metodumuzun ismi resimtikla olacaktı. Metod içerisinde daha önceki yazımda anlattığım gibi Activity Transition işlemi gerçekleştiriyoruz.

MyActivity

Bu işlemleri yaptıktan sonra Manifest dosyası içerisinde bazı izinler vermemiz gerekiyor. Vereceğimiz kullanıcı izni uygulamanın internet kullanabilmesiyle ilgili. Ayrıca SayfaAcma activity dosyasını Manifest içerisinde tanımlamalıyız. AndroidManifest dosyasının son hali şekildeki gibi olmalı.

manifest

Şimdi uygulamamızı çalıştırabiliriz. Uygulama görüntülerimiz şöyle olacak.

1     2     3

Uygulamamızın tüm kaynak kodlarına buradan ulaşabilir ve indirebilirsiniz.

Android’i bol günler…

ListView ve Custom Adapter Kullanımı

Merhaba Arkadaşlar

Bu yazımda sizlere Custom ListView kullanımından bahsedeceğim. Uygulamalardaki bazı verileri listeler halinde kullanıcılarına sunmak geliştiricilerin en çok tercih ettiği yoldur. ListView, kendi içinde TextView öğeleri bulunduran bir yapıdır. Bunun gibi birçok View’dan oluşan bir uygulama bileşenidir. Veriler bir adapter yardımıyla listeye aktarılır.Adapter bir veri kaynağıyla, veriye ihtiyacı olan nesneyi birbirine bağlamaya yarayan yapılardır.  ArrayAdapter, adı üzerinde bir dizi veriyi ListView satırlarına aktaran yapıdır.ArrayAdapter ile genelde sadece bir TextView içeren ListView için kullanırız.

Ama bu yazımızda sadece bir TextView içeren bir ListView yerine, bir image ve text içeren ListView örneği yapacağız. Yapacağımız örnek bir çok uygulamada bize referans olacaktır. Örnek uygulamamızı açıklamak gerekirse, futbola olan ilgim sebebiyle bir Spor Toto Süper Lig uygulaması yapmak istedim. Takımların amblemlerini ve isimlerini her bir satırda göstereceğiz.

Öncelikle ana tasarımımızı yapalım. Bunun için layout dosyamızı düzenleyelim. Üst tarafta TFF ve STSL amblemleri olacak. Alt kısımda da ListView bulunacak. Ana activity’nin layout dosyasının son hali şöyle olacak.

activity_my

Ana yerleşimi belirledikten sonra ListView’in her bir satırına uygulayacağımız tasarıma bir göz atalım. Bunun için layout içerisinde satir_layout.xml isminde bir dosya oluştuyoruz. Ardından bu dosyaya satırın sol tarafında İmageView sağ tarafında da bir TextView olmasını sağlıyoruz. Dosyamız şu şekilde olacak.

satir_layout

Satır tasarımını yaptıktan sonra her satır için veri tutacak modeli oluşturmak gerekiyor. Bunun için Takimlar isminde bir class oluşturuyoruz. Bu class içerisinde private olarak (String) takimismi ve (int) takimamblem değişkenleri oluştuyoruz. Ayrıca bu değişkenler için constructor ve setter,getter fonksiyonlarını tanımlıyoruz. Takımlar sınıfımız şekildeki gibi olacak.

Takimlarclass

Veri modelini oluşturduktan sonra en önemli kısma yani Custom Adapter oluşturmaya geldik.Bu sınıftan türetilen sınıfların sahip olması gereken dört metot vardır:

  • getCount(): int değer döner. ListView’da gösterilecek satır sayısını ifade eder.
  • getItem(int position): Object değer döner. position ile belirtilen satıra denk düşen nesneyi döndürür. Object yerine doğrudan model sınıfınızdan oluştuğunuz nesneyi de dönüş türü olarak belirleyebilirsiniz.
  • getItemId(int position): long değer döndürmelidir. Veri listesinde position ile sırası belirtilen satırın kimlik numarasını (id) döndürür.
  • getView(int position, View convertView, ViewGroup parent): View değer döner. position ile sırası belirtilen satır için bir View döndürür. Bu metot içindeyken her satır için XML’i okuyup View haline getirme işlemi (inflating) yaparız. Bizim tasarımını yaptığımız her bir satır bize döndürülür

Öncelikle CustomAdapter isminde bir class oluşturuyoruz. BaseAdapter sınıfınıda bu sınıfa extend ediyoruz. Kendi Adapter nesnemizi oluşturabilmek için SDK’de yer alan BaseAdapter sınıfını temel sınıf olarak kullanabiliriz. Bahsettiğimiz ilk üç metodun ve CustomAdapter sınıfının constructor metodu şekildeki gibi olacak.

customadapter

Constructor kısmında gördüğünüz gibi parametre olarak bir Activity ve List çağırıyoruz. LayoutInflater olarak oluşturduğumuz mInflater değişkenine bir sistem servisini referans gösteriyoruz: LAYOUT_INFLATER_SERVICE. Bu servis, yerleşimleri kullanıcıya gösterebilmek için View’a çevirme işlemini yapar.

CustomAdapter sınıfındaki en önemli metod getView metodudur.

getview

Bu metod içerisinde önce satir_layout dosyamızı inflate fonksiyonu ile ListView satırlarına dahil ediyoruz. Ardından satir_layout dosyası içerisinden TextView ve İmageView nesnelerimizi findViewById metodu ile çağırıyoruz. Constructor da setlediğimiz Arraylist içerisinden her satırı bir Takımlar objesine aktarıyoruz. Ardından obje içerisinden gerekli atamaları yapıyoruz. En başta oluşturduğumuz View nesnesini return ediyoruz. CustomAdapter kısmını açıkladıktan sonra şimdi ana activity üzerinde gerekli çalışmaları yapalım.

myactivity1

Resim dosyalarımı projemiz içerisine copy-paste yolu ile ekliyoruz. Ardından takım isimlerini ve takım amblemlerini içeren dizileri oluşturuyoruz. Bundan sonraki aşamada onCreate metodumuza geçiyoruz.

onCreate içinde önce bir döngü yardımı ile diziler içerisinde ki elemanlardan takım objeleri oluşturuyoruz. Bu objeleri Arraylist içerisine ekliyoruz. Listview ı findViewById metodu ile çağırıyoruz. Ardından CustomAdapter objesi oluşturup parametre olarak activity ve takimlar Arraylistimizi gönderiyoruz.Son olarak Listview e adapterimizi set ediyoruz.

myactivity2

Son işlem olarak her bir satıra dokunulduğu zaman istenilen işlemi yapması için listemize setOnItemClickListener metodunu çağırıyoruz. Switch-case ile her bir pozisyonun yapması gerekn işleri belirttik. Ben AlertDialog ile takımın lig durumunu gösterdik. Gösterilecek değerleri strings.xml dosyası içerisinde saklıyoruz. strings.xml dosyamız resimdeki gibi olacak.

stringsxml

Artık uygulamamız hazır. Uygulamayı çalıştırıyoruz. Ekran görüntülerimiz şöyle olacak.

ekran1     ekran2

Uygulamamızın tüm kaynak kodlarına buradan ulaşabilir ve indirebilirsiniz.

Android’i bol günler…

 

Activity Arası Veri Transferi

Merhaba Arkadaşlar

Bu yazımda sizlere bir önceki yazının devamı niteliğini taşıyan activityler arasında veri transferinden bahsedeceğim. Veri transferinde işimize yarayacak Intent sınıfına daha önce değinmiştik. Buna ek olarak Intent sınıfının veri transferi sağlayan metodlarını göreceğiz.

Örnek uygulama olarak bir register ekranımız olacak. Buraya gireceğimiz verileri diğer activity de bir metin halinde göstereceğiz. Önce activity yerleşimlerini görelim.

activity_first

 

activity_second

Ayrıca butonlara onClick metodlarını tanımlamayı unutmayalım. Buttonların onClick metodları ve isimleri şekildeki gibi olacaktır.

buttonlar

Yaptığımız uygulamalar büyüdükçe ve biz de dünyanın her yerinde kullanılabilmesini istedikçe, uygulamamızı daha fazla dili destekler hale getirmemiz gerektiği kaçınılmaz. Neyse ki bu iş aslında o kadar da zor değil.Uygulamalarımız da kullanılan string değerleri res > values > strings.xml dosyasında saklanır. Biz uygulamamıza values-en klasörü ekleyip İngilizce dil desteğini de uygulamamıza ekleyelim. Android uygulamalarına çoklu dil desteği Android 2.3.3 sürümü ile birlikte geldiğini ek bilgi olarak sunayım. Şimdi strings.xml dosyalarını görelim.

strings-en
strings-tr

Activityleri AndroidManifest.xml dosyamıza tanımlamayı unutmuyoruz.

manifest

Görsellik ve dil desteği kısımlarına değindikten sonra şimdide Java kodu kısmına gelelim. Uygulamamız içerisinde Intent sınıfının putExtra() ve getIntent() metodlarını kullanacağız. Bu methodlar Hashmap mantığı (anahtar-değer şeklinde) ile veri tutar ve aktarırlar. Bu kısımda daha anlaşılır olması için ben bir sabitler (Constants) sınıfı oluşturdum. Bu sabitler sınıfının değerlerini biz Hashmap anahtar değerlerimiz olarak kullanacağız. Sabitler sınıfımız şu şekilde olacak.
NOT: Bu sınıf olmadan kendi anahtar değerleriniz ile işlem yapabilirsiniz.

constants

Şimdi ilk activity içerisinde layout dosyasındaki elemanları findViewById metodu ile tanımlayalım. Ardından Gönder butonunu onClick Metodunu yazalım.

gondertikla

Burada önce bir Intent tanımlıyoruz. Bu Intent içerisinde gideceğimiz activity değerini bildiriyoruz. Ardından putExtra() metodu ile sabit değer anahtarı sayesinde Intent’e verilerimizi yüklüyoruz. Diğer butonun onClick metodunda ise EditText ve RadioButtonları sıfırlıyoruz.

temizletikla

Şimdi ikinci activity içerisinde gelen verileri alalım.

secondactivity

Burada getIntent().getExtras().getString() yolu ile daha önce belirlediğimiz sabit anahtar değerleri ile gönderilen veriyi çekip Metin değerine ekliyoruz. Ardından Metin değerimizi ekranda gösteriyoruz.
Şimdi uygulamamızı çalıştırıp bakalım. Ben çoklu dil desteğini göstermek adına dili İngilizce olan bir sanal makina kullanacağım. Eğer siz Türkçe bir cihaz kullanırsanız uygulama içerisinde ki değerler Türkçe olacaktır.

1     2     3

Uygulamamızın tüm kaynak kodlarına buradan ulaşabilir ve indirebilirsiniz.
Android’i bol günler…

Button,Toast Kullanımı ve Activity Arası Geçiş (Transition)

Merhaba Arkadaşlar

Bu yazımda sizlere uygulamanıza Button eklemeyi, bu buttonlara tıklayarak Toast message gösterimi ve activityler arası geçiş yapmasını göstereceğim. Örnek uygulamamıza geçmeden önce Toast,Activity ve Activity Transition terimlerinden söz edeyim.

Toast, Android uygulama geliştirenlerin genellikle hata ayıklamak için kullandıkları uyarı mesajı fonksiyonudur. Activity ise uygulamadaki her bir sayfa olarak düşünebiliriz. Activity Transition da bu sayfalar arası geçişi simgeler. Sayfalar arası geçiş yaparken ayrıca sayfalar arası veri transferi yapabiliriz.

Gerekli tanımlamalara değindikten sonra örnek uygulamamıza geçelim. Proje oluşturma kısmını daha önce anlatmıştık. Projemizde ki Minimum SDK 8, Target SDK 18 olarak kullanıyoruz.Sayfaların layout dosyalarını oluşturalım. Bunun için res >>> layout >>> activity_my.xml yolunu izliyoruz. activity_my.xml dosyamıza Textview ve Button ekliyoruz. Diğer activity’nin xml dosyasına da 1 adet Textview ekliyoruz. Layout dosyalarının son hali şöyle olacak.

activity_myxml

second_activity

Şimdi buttonlarımızı findViewById metodu ile id değerine göre çağırıp, OnClick metodunu hazırlayalım;

button_click

 

Önce ToastButton ile ekranda kısa süreli görünen bir Toast Message gösterelim. Bunun için ilgili buttonun setOnClickListener metodu gerekli kodları yazıyoruz.

Ardından Activityler arası geçişi sağlamak için Intent sınıfını kullanıyoruz. Intent iki ayrı android bileşeni arasındaki iletişimi çalışma zamanında (runtime) sağlayan soyut işlemleri içeren bir sınıftır. Intent’i hem activityler arası geçişte hem de verileri paketler halinde diğer uygulama bileşenlerine gönderirken kullanırız. Geçiş işlemini yapabilmek için projemizde yeni bir Activity sınıfı oluştuyoruz. Ayrıca activity sınıfı AndroidManifest.xml dosyası içerisinde tanımlıyoruz.

Kodları ekledikten sonra son hali şu şekilde olacak;

clickson

 

secondactivity

 

AndroidManifest.xml dosyamızın son hali böyle olmalı;

AndroidManifest

 

Uygulamamızı çalıştırıyoruz. Virtual Device görüntüleri aşağıdaki gibi olacaktır;

Screenshot from 2014-08-16 19:01:21      Screenshot from 2014-08-16 19:04:14      Screenshot from 2014-08-16 19:04:54

 

Kodlarımızın tamamını burada bulabilirsiniz. Şimdilik Google Drive üzerinden paylaşıyorum. Bundan sonraki uygulamaları Github üzerinden paylaşacağım.

Android’i bol günler…

 

 

GOOGLE ANDROID STUDIO Tanıtımı & İlk Proje

Merhaba Arkadaşlar

Bir önceki yazımda belirttiğim,geliştirme ortamı olarak kullanmayı planladığım Android Studio’dan bahsedeceğim. Ve bunda sonraki derslerimi Android Studio üzerinde anlatacağım.

Öncelikle kurulumu buradan yapabilirsiniz. Ayrıca Linux Dağıtımları kullananlar ppa repository olarak aşağıdaki komut satırlarını kullanarak kurulum yapabilirler.

sudo apt-add-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studio

İlk projeye başlamadan önce Android Studio’nun bana göre artı ve eksilerinden bahsetmek istiyorum.

Artıları

  • JetBrains IntelliJ Idea üzerine kurulmuş,Java geliştirmede en rahat idelerden biri hatta en iyisi olabilir :),
  • Google bunu tamamen elden geçirip bir android geliştirme ortamı sağlamış.
  • SDK ve AVD yönetimi ve diğer işlemler çok iyi. Gereksiz menülerle gezmiyorsun,
  • Refactor, reflection vb işlemleri çok rahat yapabiliyorsunuz.
  • Kod yazımı çok rahat. IntelliSense yi istersen hızlandırabiliyor ve her şeyi tamamlar hale getirebiliyorsun,
  • Debugger ve Publish çok rahat,
  • Android içinde olup biten çok rahat izleniyor.
  • Designer çok rahat.

Gelelim Eksilerine

  • Gradle bazen sapıtıyor veya çok yavaş çalışıyor. Uzun süre beklediğiniz oluyor.
  • Cihaza yada emülatore deploy ederken beklenen süre biraz fazla. Ama bunu emülatorü Snapshot durumunda kaydedersek minimuma düşürebiliriz.
  • Arada designer sapıtıyor.

İlk Projenin Açılması ve AVD Kurulumu

1. Android Studio’yu açılınca gelen ilk ekranda New Project diyoruz

0

 

2. Gelen ekranda proje ve package ismini girip Next butonuna tıklıyoruz.

1

 

3. Minimum SDK’mızı istediğimiz gibi ayarlıyoruz.

2

 

4.Sonraki ekranda activity türümüzü seçelim.

3

 

5. Activity ismimizi belirleyip Finish diyerek projemizi oluşturuyoruz.

AVD (Android Virtual Device) Kurulumu

1.Projemiz açıldıktan sonra Tools > Android > AVD Manager yolunu takip ederek aşağıdaki ekranı elde ediyoruz.

5

 

2. Sağ taraftan Create butonunu tıklıyoruz.

6

 

3.Yukarıdaki ayarları yapıp AVD’mizi oluşturuyoruz.

Son olarak AVD’mizi de kurduktan sonra artık projemizi çalıştırabiliriz. Bunun için Shift+F10 veya menü kısmının alt tarafında bulunan yeşil üçgene tıklayıp AVD seçimi yapıyoruz. Bir süre bekledikten sonra projemiz açıklanacaktır.

7

Görüşmek üzere…