Android’te RSS İle Çalışmak


Merhaba bu haftaki yazımda Android’te RSS İle Çalışmak konusunu anlatacağım. Temelde aşağıdaki sorulara cevap niteliğinde bir yazı olacak:

 RSS nedir?

 RSS Android’te nasıl ayrıştırılır?

 Ayrıştırılan veri nasıl kullanılır?

 Bir RSS Okuyucu uygulaması nasıl yazılır?

RSS Nedir?

RSS(Rich Site Summary(Zengin Site Özeti)) : Düzenli olarak değişen website içeriğinin izlenebilmesini sağlayan bir içerik besleme yöntemidir. Çeşitli websitelerde bulunmaktadır. Özellikle haber siteleri ve bloglar kullanmaktadırlar.

Bir site RSS e sahipse, RSS istemcinizle siteye ait değişen içeriğe ulaşabilirsiniz. Yani yeni haberlerden, postlardan, ya da yazılardan ya da videolardan vb. haberdar olabilirsiniz.

Birkaç RSS Örneği :

Android Evreni RSS
Webrazzi RSS
TRT Haber – Son Dakika RSS

RSS hakkında daha detaylı bilgi için şurayı ve burayı ziyaret edebilirsiniz.

Kısa bir giriş yaptık. Artık uygulama örneğimize geçebiliriz.

Uygulamalı Örnek İçin RSS Verimiz

Beraber yazacağımız uygulama örneği için yukarıda verdiğim Webrazzi’ye ait RSS i örnek amaçlı kullanacağım.

Android te RSS İle Çalışmak - Webrazzi RSS

Uygulama Örneği

NOTLAR :

Bu uygulama örneği Android Studio 2.1.1 sürümü kullanılarak hazırlanmış ve Android 6.0 versiyonuna sahip bir Nexus 5 emülatör ile test edilmiştir.

Yazıdaki görsellere tıklayarak orjinal boyutlarında görebilirsiniz.

Kaynak kodların içine açıklamalar bıraktım, bunları okumayı ve kullanmayı ihmal etmeyiniz.

Uygulama örneğimize ait tüm kaynak kodu bu yazının sonunda indirebilir, istediğiniz gibi kullanabilirsiniz.

1. Android Studio‘yu açın.

NOT : DAHA ÖNCE BİRÇOK KEZ YENİ ANDROID PROJESİ OLUŞTURDUK. BU YÜZDEN ÜSTÜNDE PEK DURMAYACAĞIM.

2. Start a new Android Studio project seçeneği ile yeni bir proje başlatın.
3. Application name, Company Domain, Package name, yani uygulama adı, domain, paket adı gibi değerleri istediğiniz gibi doldurun. Benim kullandıklarım aşağıdaki görselde verilmiştir.

Android te RSS İle Çalışmak - Yeni Proje Oluşturma

4. Minimum SDK yani destekleyebileceğiniz en eski Android Sürümü için Api Level 14 ü seçmenizi öneririm. Play Store u ziyaret eden cihazların neredeyse tamamı artık 4.0 üzeri Android sürümü kullanmaktadır. Yine de siz bilirsiniz :)

Android te JSON Veriyle Çalışmak - Minimum SDK

5. Sonraki ekranlarda da seçimlerinizi istediğiniz gibi yapabilirsiniz. Aşağıdaki görseller de devamını görebilirsiniz.

Android te JSON Veriyle Çalışmak - Aktivite Eklemek

Android te JSON Veriyle Çalışmak - Aktiviteyi Özelleştirme

6. Şimdi Android Studio projeyi oluşturup açacaktır. Proje açıldıktan sonra menüden Tools > Android > AVD Manager ile AVD Manager i açıp uygun bir emülatörü başlatın.

7. Emülatör açıldıktan sonra uygulamayı menüden Run > Run app ile veya Shift + F10 kısayolu ile en az bir kez çalıştırıp herhangi bir problem olmadığını görün.

Android te RSS İle Çalışmak - RSS Tutorial

Evet, sıkıcı adımlar bittiğine göre artık gerçekten iş yapabiliriz! Hadi Başlayalım!

8. Öncelikle her zaman yaptığımız gibi Hello World! TextView i activity_main.xml den kaldırın.

9. AndroidManifest.xml e internet iznini ekleyin.

10. MainActivity.java sınıfını açın ve aşağıdaki değişiklikleri ekleyin.

RSS beslemeleri aslında xml veridir. Yani RSS beslemesini çekmek ve ayrıştırmak demek aslında xml veri çekip ayrıştırmak demektir. Bizim de yapacağımız tam olarak budur.

Burada;

-Öncelikle Log mesajlarımız için kullanacağımız bir etiket(TAG) tanımladık. RSS i alacağımız adresi(RSS_URL) tanımladık. Ve ek olarak RSS i indirecek ve ayrıştıracak sınıfımız için bir değişken(pullAndParseXML) ekledik. PullAndParseXML sınıfımızı birazdan ekleyeceğiz.

PullAndParseXML sınıfımızdan bir örnek(instance) aldık. Ve downloadXML metodunu çağırarak RSS i indirme ve ayrıştırma işlemlerini başlatmış olduk.

getImageUrls metodu kendisine verilen String içindeki linkleri tek tek eliyor. Ve daha sonra bu linklerden sonu jpg, png veya gif ile bitenleri bir listeye ekleyip geri döndürüyor.

-İndirme ve ayrıştırma işlemleri bittikten sonra test amaçlı RSS teki son yazıya ait bilgileri Logcat e yazdırdık.

11. PullAndParseXML adında bir sınıf açın. Ve aşağıda verdiğim kodu ekleyin. Burada;

-Öncelikle RSS te bulunan her bir yazı için almak istediğimiz değerleri saklamak üzere değişkenler tanımlıyoruz.

-Daha sonra RSS/XML indirilirken kullanılacak olan okuma zaman aşımı ve bağlantı zaman aşımı değerlerimizi tanımlıyoruz.

-XML i indirme ve ayrıştırmada bize yardımcı olacak XmlPullParserFactory sınıfını kullanmak üzere değişken ekliyoruz.

-RSS adresini alıp saklayabilen bir constructor tanımlıyoruz.

downloadXML metodu XML i indirip parseXML metoduna gönderiyor.

parseXML metodu her yazıya ait ilgili olduğumuz değişkenleri ayrıştırıp saklıyor.

Uygulamayı çalıştırın ve Logcat i gözlemleyin. Aşağıdaki gibi mesajlar görmelisiniz.

Android te RSS İle Çalışmak - RSS i İndirip Ayrıştırdık

Yazının devamında rss ten aldığımız postlara ait bilgileri önce saklayacak daha sonra da listeleyeceğiz.

12. Bildiğiniz gibi şu ana kadar sadece tek yazıya(son yazıya) ait bilgileri saklıyoruz. Ama bizim ihtiyacımız RSS teki tüm yazılara ait bilgiler. Bunların saklanması ve kullanılabilmesi için bazı değişiklikler, eklemeler yapacağız.

models adında yeni bir paket oluşturup içine Post.java adında bir sınıf oluşturun. Ve aşağıdaki kodu ekleyin. Burada her bir yazı için yazıya bilgileri tutacağımız bir nesne/model tanımladık. Ayrıca yazıya ait herhangi bir bilgiyi hızlıca almamızı veya tanımlamamızı sağlayacak getter ve setter metodları da tanımladık.

RSS e göz atarsanız yazı birden fazla kategoriye sahip olabiliyor. Bu nedenle kategorileri category adında bir String Liste de tuttuk. Ve de ayrıca bu listeye rahatlıkla kategori elemanları ekleyebilmemiz için addCategoryItem metodunu oluşturduk.

13. PullAndParseXML sınıfında postlara ait bilgilerin bir listede(postList) saklanabilmesi ve başka sınıfılardan alınabilmesi(getPostList metodu) için aşağıdaki değişiklikleri yapın.

14. Herşeyin yolunda olduğunu test etme amaçlı MainActivity.java sınıfında aşağıdaki değişiklikleri yapın. Ve uygulamayı çalıştırıp Logcat i gözlemleyin.

Logcat te aşağıdaki gibi bir çıktı görmelisiniz.

Android te RSS İle Çalışmak - Postlara ait bilgileri Logcat e yazdırdık

Evet RSS teki tüm postlara ait bilgileri aldık ve sakladık. Şimdi listelemeye geçelim.

15. colors.xml dosyasına şu renkleri ekleyin. Dikkat edin colorPrimary , colorPrimaryDark ve colorAccent i de değiştirdim. Siz de isteğinize göre değiştirebilirsiniz.

13. dimens.xml dosyasına alağıdaki boyutları ekleyin.

14. Liste için RecyclerView elemanlar için CardView kullanacağız. Listedeki elemanlara ait görselleri/resimleri yüklemek için Picasso kütüphanesini kullanacağız. İnternetten çekilen görsellerin cache işlemlerini bizim yerimize halledecek.

app modülüne ait build.gradle gradle dosyasında dependencies bölümüne RecyclerView, CardView ve Picasso yu aşağıdaki gibi ekleyin.

15. activity_main.xml e RecyclerView widget i aşağıdaki gibi ekleyin. Ayrıca RelativeLayout ta yaptığım değişiklikleri de yapın.

16. Listedeki her bir item için kullanılacak arayüz modeli için post_card.xml adında bir layout oluşturun. Ve aşağıdaki kodu ekleyin. Burada her eleman için bir CardView kullandık. Elemana ait görselin altına başlık ve en sağ köşeye de kategorisi gelecek şekilde ayarladık.

17. adapters adında yeni bir paket oluşturun. Bu paketin içine PostsAdapter.java adında bir sınıfı oluşturun. Ve aşağıdaki kodu ekleyin. Burada onCreateViewHolder metodu her eleman için hazırladığımız post_card.xml dosyamızın elemana ait arayüz modeli olarak kullanılmasını sağlıyor. onBindViewHolder metodu her elemana ait bilgileri veri listesinden çekip ilgili arayüz elemanına atıyor.

18. MainActivity.java dosyasında aşağıdaki değşiklikleri yapın. Burada RecyclerView ayarlarının yapılması, ve veri ile bağlantı kurması için adaptörünün atanması gibi değişiklikler yaptık.

Şimdi uygulamayı çalıştırın aşağıdakine benzer ekran görüntüleri görmelisiniz.

Android te RSS İle Çalışmak - Sonuç

Kaynak Kod

Bu haftaki yazımın sonuna geldik. Umarım birçok insana yararı olur.

Gelecek hafta yeni bir yazıda görüşmek üzere,
Herkese İyi Çalışmalar.

Android’te JSON Veri İle Çalışmak Konulu yazımı okumak için buraya tıklayın!

Şunlar da ilginizi çekebilir

LEAVE A COMMENT