iOS, Android, Windows mobile development codes and tips

Yazılar Etiketlenmiş Sulubeyn

WP7 Rss Okuma

Merhabalar,

WP7 ile rss okuma ve ekran çıktısı alma işlemi üzerinde ufak bir uygulama geliştireceğiz.

Bu makaledem Rss’i bind etme ve ListBox Kontrolün DataItemTemplate özelliğini kullanacağız.

Öncelikle Yeni bir proje açıyoruz. Bu projemizde  Windows Phone Panaroma Application yerine Sadece Windows Phone Application Seçeneğini seçiyourz.


Uygulamamızı Oluşturdukdan sonra Rss okumak için gerekli olan referansımızı Refenrences’ e sağ tıklayarak Browse Seçeneğini seçiyoruz ve
Referans dosyamız %ProgramFiles%\Microsoft SDKs\Silverlight\v3.0\Libraries\Client\System.ServiceModel.Syndication.dll Dizini altında bulunmaktadır

Referansımızı ekledikten sonra Visual Studio Aşağıda görmüş olduğunuz uyarı mesajını verecektir. YES Tuşuna basıp Referansımızı ekliyoruz.



Evet Şu anda projemiz ve referans dosyamız hazır. Kod yazmaya geçmeden önce MainPage.xaml dosyamızı resimde görüldüğü gibi bir
button ve listbox atarak Title ve Page contentlerini isteğinize göre düzenleyerek ana ekranımızı oluşturabiliriz.

RssItem.cs

Yeni bir class dosyası oluşturup ismini RssItem.cs verelim. ve aşağıdaki kodu bu class dosyamızın içine yazalım.


        /// 
        /// Model
        /// 
        public class RssItem
        {
           /*
           
            *    
		   Amerikan Doları 
		   Alış:1.7860 TL ~ Satış:1.8000 TL 
		   http://kur.doviz.com/serbest-piyasa 
	         
            * 
            * */
            public RssItem(string title, string description, string Link)
            {

                Title = title;
                Description = description.Split('~');
                Url = Link;

            }

            public string Title { get; set; }
            public string[] Description { get; set; }
            public string Url { get; set; }


RssService.cs

RssItem Classımızı tetiklemek üzere kullanacağımız servis class dosyamızdır. Bu dosyayı aşağıdaki gibi modifiye ediyoruz.

public static class RssService
    {

     
        public static void GetRssItems(string rssFeed, Action> onGetRssItemsCompleted = null, Action onError = null, Action onFinally = null)
        {
            WebClient webClient = new WebClient();

            // Download Bitişini Register Ediyoruz

            webClient.OpenReadCompleted += delegate(object sender, OpenReadCompletedEventArgs e)
            {
                try
                {
                    // Error varmı varsa Rapor et
                    if (e.Error != null)
                    {
                        if (onError != null)
                        {
                            onError(e.Error);
                        }
                        return;
                    }

                    // Rss den gelen değerleri Modelimize Bind Ediyoruz
                    List rssItems = new List();
                    Stream stream = e.Result;
                    XmlReader response = XmlReader.Create(stream);
                    SyndicationFeed feeds = SyndicationFeed.Load(response);
                    foreach (SyndicationItem f in feeds.Items)
                    {
                        RssItem rssItem = new RssItem(f.Title.Text, f.Summary.Text.Trim(),  f.Links[0].Uri.AbsoluteUri);
                        rssItems.Add(rssItem);
                    }

                    // Callback complate 
                    if (onGetRssItemsCompleted != null)
                    {
                        onGetRssItemsCompleted(rssItems);
                    }
                }
                finally
                {
                    // Callback Bitti
                    if (onFinally != null)
                    {
                        onFinally();
                    }
                }
            };

            webClient.OpenReadAsync(new Uri(rssFeed));
        }
    }

Bu class dosyamızda ana Modelimizi Data Context modelimizi oluşturdur. Bundan sonra gelecek bütün datalarımızı bu Model vasıtası ile işleyerek RssItem olarak geri döndüreceğiz.

MainPage.xaml

Mainde bulunan Button üzerine çif tıklayarak yazmış olduğumuz Service Classını tetikletiyoruz.


            RssService.GetRssItems("http://www.doviz.com/servis/rss/doviz/serbest-piyasa",
                                   (items) => { list.ItemsSource = items; },
                                   (exception) => { MessageBox.Show(exception.Message); },
                                   null
        );

En son olarak

MainPage.xaml de bulunan ListBox kontrolümüze data bind edeceğimiz için önceden yazmış olduğumuz Data Model e göre Template uygulaması yapıyoruz.

  
                
                    
                        
                            
                                
                                
                                
                            
                            
                            
                            
                        
                    
                
            

Programımızın çalışma zamanı görüntüsü ise aşağıdaki gibi olacaktır.



Proje Dosyasını Buradan İndirebilirsiniz


Sulubeyn