====== 016 シンプルなツイッタークライアント ======
{{:wiki:windowsphone:7.1:tips:w_phone_016_001.png?200|}}
===== 概要 =====
リストボックスにTwitterのユーザー名を入力し、ボタンをクリックするとツイートが表示されます。
==== MainPage.xaml ====
==== MainPage.xaml.cs ====
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Xml.Linq;
using Microsoft.Phone.Controls;
namespace TwitterApp
{
// Twitterアイテム用ヘルパークラス。
public class TwitterItem
{
public String UserName { get; set; }
public String Image { get; set; }
public String Message { get; set; }
};
// メインエントリーポイント
public partial class MainPage : PhoneApplicationPage
{
// コンストラクタ
public MainPage()
{
// コンポーネントの初期化。
InitializeComponent();
}
// ボタンクリック時に呼ばれるメソッド
private void button1_Click(object sender, RoutedEventArgs e)
{
// ユーザー名が入力されていない。
if (username.Text == "")
{
MessageBox.Show("テキストボックスにユーザー名を入力してください");
return;
}
// ユーザー情報の取得。
WebClient twitter = new WebClient();
twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(OnTwitterDownloadStringCompleted);
twitter.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + username.Text));
}
// ダウンロード結果を返すメソッド。
private void OnTwitterDownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e )
{
if(e.Error != null)
{
return;
}
XElement xmlTweets = XElement.Parse(e.Result);
listBox1.ItemsSource = from tweet in xmlTweets.Descendants("status")
select new TwitterItem
{
Image = tweet.Element("user").Element("profile_image_url").Value,
Message = tweet.Element("text").Value,
UserName = tweet.Element("user").Element("screen_name").Value
};
}
}
}