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.
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.
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
5. Sonraki ekranlarda da seçimlerinizi istediğiniz gibi yapabilirsiniz. Aşağıdaki görseller de devamını görebilirsiniz.
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.
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.
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.
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.
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.