рдирдорд╕реНрддреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдореЛрдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореЛрдиреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ xml рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдЗрд╕реЗ рдорд╛рд░реНрдХрдЕрдк рдХрд╣рддреЗ рд╣реИрдВ) рд╣рдореЗрдВ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЯреВрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ
DroidDraw рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛
рд╣реВрдВ , рд▓реЗрдХрд┐рди рдиреЗрдЯ рдкрд░ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреБрди рд╕рдХрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ (рдпрд╛ рдХрдИ) рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдРрд╕рд╛ рддрдм рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдВрд╕реНрдХрд░рдг 2.1.1 рдХреЗ рд╕рд╛рде рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдм рдЖрдк рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдореЛрдиреЛ рдПрдВрдбреНрд░реЙрдпрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓рд╛ рдореЛрдиреЛ рдПрдВрдбреНрд░реЙрдпрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ

рдФрд░ рдЗрд╕реЗ MyFirstMonoAndroidApplication рдХрд╣рддреЗ рд╣реИрдВред

рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдПрд╕реЗрдЯреНрд╕ рдПрдВрдб рд░рд┐рд╕реЛрд░реНрд╕реЗрдЬ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рдФрд░ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА 1 рдирд╛рдордХ рдПрдХ рд╡рд░реНрдЧред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпрд╛рдБ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреАред рдореИрдВ рд╢реЗрд╖ рддрддреНрд╡реЛрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдбреНрд░реЙрдПрдмрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рд▓реЗрдЖрдЙрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ xml рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ AndroidResource рдХреЗ рд░реВрдк рдореЗрдВ рдЧреБрдгреЛрдВ рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪрд▓рд┐рдП рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ 1 рдХрдХреНрд╖рд╛ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреНрдпрд╛ рд╣реИ? рдЧрддрд┐рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓рдЧрднрдЧ рд╕рднреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (xml рдорд╛рд░реНрдХрдЕрдк) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред
SetContentView рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ (Resource.Layout.Main);
рдпрд╣ рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рд╣реИ рдХрд┐ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдЗрдП рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрдВред
рдЗрд╕реЗ рджреЛ рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд░реВрдк рд╣реЛрдиреЗ рджреЗрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рджреВрд╕рд░реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдЕрдВрдХрди:
<? xml version ="1.0" encoding ="utf-8" ? >
< LinearLayout
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical" >
< Button
android:id ="@+id/FirstExample"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:text ="First Example" ></ Button >
< Button
android:id ="@+id/SecondExample"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:text ="Second Example" ></ Button >
</ LinearLayout >
* This source code was highlighted with Source Code Highlighter .
рдЖрд╡реЗрджрди рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рджреЗрдЦреЗрдВрдЧреЗред
[Activity(Label = "My first mono android activity" , MainLauncher = true , Icon = "@drawable/icon" )]
public class MyMainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base .OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button firstExample = FindViewById<Button>(Resource.Id.FirstExample);
firstExample.Click += firstExample_Click;
Button secondExample = FindViewById<Button>(Resource.Id.SecondExample);
secondExample.Click += secondExample_Click;
}
void firstExample_Click( object sender, EventArgs e)
{
Intent titlesIntent = new Intent( this , typeof (TitlesListActivity));
StartActivity(titlesIntent);
}
void secondExample_Click( object sender, EventArgs e)
{
Intent friendlyListIntent = new Intent( this , typeof (MoreFriendlyRssFeedActivity));
StartActivity(friendlyListIntent);
}
}
* This source code was highlighted with Source Code Highlighter .
рдирдпрд╛ рдЗрдВрдЯреЗрдВрдЯ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИред
рдЖрд╢рдп рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдгрди рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдЖрдк рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдЧрд╛ред
рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЯрд╛рдЗрдЯрд▓реНрд╕ рд▓рд┐рд╕реНрдЯрдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдФрд░ рдореЛрд░реЗрдлреНрд░реЗрдВрдбрд▓реАрдЖрд░рдПрд╕рдПрд╕рдлреАрдбрдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдирд╛рдо рдХреЗ рд╕рд╛рде рджреЛ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдВ рдЬреЛрдбрд╝реЗрдВред
рдореИрдВ рдХреБрдЫ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдореЛрдиреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЪреЗрд╣рд░реЗ рдХреА рдореБрдЦреНрдп рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдЗрд╕реЗ рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рд╕реЗ рд╕реБрд░реНрдЦрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирдиреЗ рджреЗрдВред рдЖрдЗрдП рдЖрд░рдПрд╕рдПрд╕ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВред
public class RssReader
{
private const string _title = "title" ;
private const string _link = "link" ;
private const string _item = "item" ;
private const string _channel = "channel" ;
private static Func< XElement , RssListItem> GetTitlesAndLinksFunc = (x => new RssListItem { Title = x.Element(_title).Value, Link = x.Element(_link).Value });
public static IList<RssListItem> GetRssListItems( params string [] rssUris)
{
List <RssListItem> fullList = new List <RssListItem>();
IEnumerable < XElement > itemsFromConcreteIteration;
foreach ( string rssUri in rssUris)
{
itemsFromConcreteIteration = GetRssFeedChannel(rssUri).Elements(_item);
fullList.AddRange(itemsFromConcreteIteration.Select(GetTitlesAndLinksFunc));
}
return fullList;
}
public static IEnumerable < string > GetTitles( string rssUri)
{
IEnumerable < XElement > items = GetRssFeedChannel(rssUri).Elements(_item);
return items.Select(x => x.Element(_title).Value);
}
public static XElement GetRssFeedChannel( string rssUri)
{
XElement feed = XElement .Load(rssUri);
return feed.Element(_channel);
}
}
public class RssListItem
{
public string Title { get ; set ; }
public string Link { get ; set ; }
}
* This source code was highlighted with Source Code Highlighter .
рдЕрдм рдЗрд╕ рд╕реВрдЪреА рдХреЛ TitlesListActivity рдирд╛рдордХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо ListActivity рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдореБрдЦреНрдп (рдФрд░ рдХреЗрд╡рд▓) рдЙрджреНрджреЗрд╢реНрдп рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕реЗ xml рдорд╛рд░реНрдХрдЕрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ SetContentView рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
[Activity(Label = "List" )]
public class TitlesListActivity : ListActivity
{
protected override void OnCreate(Bundle bundle)
{
base .OnCreate(bundle);
var titles = RssReader.GetTitles( "http://habrahabr.ru/rss/blogs/mono/" );
ListAdapter = new ArrayAdapter< string >( this , Android.Resource.Layout.SimpleListItem1, titles.ToArray());
}
}
* This source code was highlighted with Source Code Highlighter .
рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИ: Android.Resource.Layout.SimpleListItem1ред рдпрд╣ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рд╕рдХреА рдкреВрд░реА рд╕реВрдЪреА (рдорд╛рд░реНрдХрдЕрдк рдХреЗ рд╕рд╛рде)
рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА
рд╣реИ ред
рдЗрд╕рдХрд╛ рдорд╛рд░реНрдХрдЕрдк:
< TextView xmlns:android ="http://schemas.android.com/apk/res/android"
android:id ="@android:id/text1"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:textAppearance ="?android:attr/textAppearanceLarge"
android:gravity ="center_vertical"
android:paddingLeft ="6dip"
android:minHeight ="?android:attr/listPreferredItemHeight"
/>
* This source code was highlighted with Source Code Highlighter .
рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ RSS рдлреАрдб рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЗрдбрд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЦреБрд▓ рдЬрд╛рддреА рд╣реИред

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЖрдЗрдП рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ
рд╕реВрдЪреА рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ RSS рдлрд╝реАрдб рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝реАрдб рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЦреЛрд▓реЗрдВред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдбреНрд░реЙрдмрд▓ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдореЛрдиреЛ рдФрд░ .NET рд▓реЛрдЧреЛ рдХреЗ рд╕рд╛рде рджреЛ рдЪрд┐рддреНрд░ рдЬреЛрдбрд╝реЗрдВ (рд╕рдВрд╕рд╛рдзрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛!)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Strings.xml рдлрд╝рд╛рдЗрд▓ (рдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛) рдореЗрдВ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬреЛрдбрд╝реЗрдВ:
<? xml version ="1.0" encoding ="utf-8" ? >
< resources >
< string name ="ApplicationName" > MyFirstMonoAndroidApplication </ string >
< string-array name ="frameworks" >
< item > Mono </ item >
< item > .Net </ item >
< item > Mono and .Net </ item >
</ string-array >
</ resources >
* This source code was highlighted with Source Code Highlighter .
рдЕрдм рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ MoreFriendlyRssFeed.xml
<? xml version ="1.0" encoding ="utf-8" ? >
< LinearLayout
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical" >
< Spinner
android:id ="@+id/FrameworkSelector"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content" >
</ Spinner >
< ListView
android:id ="@+id/RssEntries"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content" >
</ ListView >
</ LinearLayout >
* This source code was highlighted with Source Code Highlighter .
рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдмрди рдФрд░ рд╕реВрдЪреА рджреГрд╢реНрдп рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд┐рдирд░ред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ, рд╡рд╣ рд╕реВрдЪреА рджреГрд╢реНрдп (рдпрд╛ рдмрд▓реНрдХрд┐, рдЙрд╕рдХреЗ рдПрдбреЙрдкреНрдЯрд░) рдХреЗ рдЕрдВрджрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реВрдЪреА рджреГрд╢реНрдп рдХреЗрд╡рд▓ "рдХреБрдЫ" рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ RssRow.xml рдХрд╣рддреЗ рд╣реИрдВред рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдПрдХ рдЫрд╡рд┐ рдФрд░ рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЯрди рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ - рд▓реЗрдЦ рдХрд╛ рд╢реАрд░реНрд╖рдХред
<? xml version ="1.0" encoding ="utf-8" ? >
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
android:padding ="6dip" >
< ImageButton
android:id ="@+id/LogoButton"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:src ="@drawable/mono" >
</ ImageButton >
< TextView
android:id ="@+id/Title"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content" >
</ TextView >
</ LinearLayout >
* This source code was highlighted with Source Code Highlighter .
рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
[Activity(Label = "Friendly List" )]
public class MoreFriendlyRssFeedActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base .OnCreate(bundle);
SetContentView(Resource.Layout.MoreFriendlyRssFeed);
Spinner spinner = FindViewById<Spinner>(Resource.Id.FrameworkSelector);
spinner.ItemSelected += spinner_ItemSelected;
ArrayAdapter adapter = ArrayAdapter.CreateFromResource( this , Resource.Array.frameworks, Android.Resource.Layout.SimpleSpinnerItem);
adapter.SetDropDownViewResource(
Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter = adapter;
}
void spinner_ItemSelected( object sender, ItemEventArgs e)
{}
}
* This source code was highlighted with Source Code Highlighter .
рдЖрдЗрдП рдПрдХ рдФрд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрд╕рд╛рдзрди Android.Resource.Layout.SimpleSpinnerItem рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕рдХрд╛ рдорд╛рд░реНрдХрдЕрдк рднреА рджреВрдВрдЧрд╛:
< TextView xmlns:android ="http://schemas.android.com/apk/res/android"
android:id ="@android:id/text1"
style ="?android:attr/spinnerItemStyle"
android:singleLine ="true"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content" />
* This source code was highlighted with Source Code Highlighter .
рдХрд┐рд╕реА рд╕реВрдЪреА рдореЗрдВ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ArrayAdapter рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЕрдЧрд░ рд╣рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, ArrayAdapter рд╕реЗ рдПрдХ рдЗрдирд╣реЗрд░реАрдЯрд░, рдЬреЛ рдЧреЗрдЯрд╡реНрдпреВ рдкрджреНрдзрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдБрдзрдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RssListItemAdapter рд╡рд░реНрдЧ рдмрдирд╛рдПрдБ:
public class RssListItemAdapter: ArrayAdapter<RssListItem>
{
private IList <RssListItem> Items;
public RssListItemAdapter(Context context, int textViewResourceId, IList<RssListItem> items)
: base (context, textViewResourceId, items)
{
Items = items;
}
public override View GetView( int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null )
{
LayoutInflater inflater = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
// , .
view = inflater.Inflate(Resource.Layout.RssRow, null );
}
//
RssListItem item = Items[position];
//
//
ImageButton btnLogo = (ImageButton)view.FindViewById(Resource.Id.LogoButton);
btnLogo.Click += delegate
{
Intent browserIntent = new Intent( "android.intent.action.VIEW" , Android.Net. Uri .Parse(item.Link));
Context.StartActivity(browserIntent);
};
// ( )
btnLogo.SetImageResource(item.Title.StartsWith( "Mono" ) ? Resource.Drawable.mono : Resource.Drawable.net);
//
TextView txtTitle = (TextView)view.FindViewById(Resource.Id.Title);
txtTitle.Text = item.Title;
//
return view;
}
}
* This source code was highlighted with Source Code Highlighter .
рдЕрдм рдбреЗрдЯрд╛ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдмрд╛рдВрдзрдирд╛ рдФрд░ рдЙрд╕реЗ рдЙрд╕ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕реВрдЪреА рд╕реЗ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
void spinner_ItemSelected( object sender, ItemEventArgs e)
{
ListView view = FindViewById<ListView>(Resource.Id.RssEntries);
switch (e.Position)
{
case 0:
view.Adapter = new RssListItemAdapter( this , Resource.Layout.RssRow, RssReader.GetRssListItems( "http://habrahabr.ru/rss/blogs/mono/" ));
break ;
case 1:
view.Adapter = new RssListItemAdapter( this , Resource.Layout.RssRow, RssReader.GetRssListItems( "http://habrahabr.ru/rss/blogs/net/" ));
break ;
case 2:
view.Adapter = new RssListItemAdapter( this , Resource.Layout.RssRow, RssReader.GetRssListItems( "http://habrahabr.ru/rss/blogs/mono/" , "http://habrahabr.ru/rss/blogs/net/" ));
break ;
}
}
* This source code was highlighted with Source Code Highlighter .
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдВ рдФрд░ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЦреЛрд▓реЗрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ RSS рдлрд╝реАрдбреНрд╕ (рдпрд╛ рдлрд╝реАрдбреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред

рд╣рдорд╛рд░реА рд╕реВрдЪреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

рдЬрдм рдЖрдк рд╢реАрд░реНрд╖рдХ рдХреЗ рдмрдЧрд▓ рд╡рд╛рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛ред

Android рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдирд╛
рдмрд┐рдВрджреБ рдЫреЛрдЯрд╛ рд╣реИ: рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдВред рдпрджрд┐ рд╣рдо рдЕрднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдкреАрдХреЗ (рдПрдВрдбреНрд░реЙрдЗрдб рдкреИрдХреЗрдЬ) рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред рдореИрдВ рдпрд╣ рднреА рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдореЛрдиреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдЖрдкрдХреЛ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрдм рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрд╕рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред
рд╕реНрдерд╛рдкрдирд╛ рдкреИрдХреЗрдЬ рдХреА рд╕рд╣реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ AndroidManifest.xml рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ AndroidManifest.xml рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ:

рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛:
<? xml version ="1.0" encoding ="utf-8" ? >
< manifest xmlns:android ="http://schemas.android.com/apk/res/android" package ="First.MonoApp" android:versionCode ="1" android:versionName ="1.0" >
< application android:label ="MyMonoApp" >
</ application >
< uses-sdk android:minSdkVersion ="4" />
< uses-permission android:name ="android.permission.INTERNET" />
</ manifest >
* This source code was highlighted with Source Code Highlighter .
рдЕрдм рдЖрдк рдПрдкреАрдХреЗ рдлрд╛рдЗрд▓ рдЬрдорд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд┐рд▓реНрдб -> Android рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ MyFirstMonoAndroidApplication (.apk)
рдЗрд╕реЗ рдЕрдкрдиреЗ Android рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА:
рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ: рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкреВрд░реНрдг рдкрд╣реБрдВрдЪред
рдпрд╣реА рд╣реИ, рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдВрдЧреАред рд╣рдо рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ ...

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ