Fsharp xamarin android listview
Learing F# Xamarin.Android ListView
I am learning F# and decided I would start with a Xamarin.Android project that shows a list view.
I decided I would convert the c# example in Mirosoft docs to F#.
https://docs.microsoft.com/en-us/xamarin/android/user-interface/layouts/list-view/
I started with a Xamarin.Android blank project with F# as the language
Please all the instructions for adding xml files.
In MainActivity.fs change the class to inherit from ListActivity instead of Activity
type MainActivity () =
inherit ListActivity ()
In the MainActivity.fs we want to change the OnCreate function. First have it create a list of countries.
override this.OnCreate (bundle) =
base.OnCreate (bundle)
let countries = [ "Afghanistan";"Albania";"Algeria";"American Samoa";"Andorra";
"Angola";"Anguilla";"Antarctica";"Antigua and Barbuda";"Argentina";
"Armenia";"Aruba";"Australia";"Austria";"Azerbaijan";
"Bahrain";"Bangladesh";"Barbados";"Belarus";"Belgium";
"Belize";"Benin";"Bermuda";"Bhutan";"Bolivia";
"Bosnia and Herzegovina";"Botswana";"Bouvet Island";"Brazil";"British Indian Ocean Territory";
"British Virgin Islands";"Brunei";"Bulgaria";"Burkina Faso";"Burundi";
"Cote d'Ivoire";"Cambodia";"Cameroon";"Canada";"Cape Verde";
"Cayman Islands";"Central African Republic";"Chad";"Chile";"China";
"Christmas Island";"Cocos (Keeling) Islands";"Colombia";"Comoros";"Congo";
"Cook Islands";"Costa Rica";"Croatia";"Cuba";"Cyprus";"Czech Republic";
"Democratic Republic of the Congo";"Denmark";"Djibouti";"Dominica";"Dominican Republic";
"East Timor";"Ecuador";"Egypt";"El Salvador";"Equatorial Guinea";"Eritrea";
"Estonia";"Ethiopia";"Faeroe Islands";"Falkland Islands";"Fiji";"Finland";
"Former Yugoslav Republic of Macedonia";"France";"French Guiana";"French Polynesia";
"French Southern Territories";"Gabon";"Georgia";"Germany";"Ghana";"Gibraltar";
"Greece";"Greenland";"Grenada";"Guadeloupe";"Guam";"Guatemala";"Guinea";"Guinea-Bissau";
"Guyana";"Haiti";"Heard Island and McDonald Islands";"Honduras";"Hong Kong";"Hungary";
"Iceland";"India";"Indonesia";"Iran";"Iraq";"Ireland";"Israel";"Italy";"Jamaica";
"Japan";"Jordan";"Kazakhstan";"Kenya";"Kiribati";"Kuwait";"Kyrgyzstan";"Laos";
"Latvia";"Lebanon";"Lesotho";"Liberia";"Libya";"Liechtenstein";"Lithuania";"Luxembourg";
"Macau";"Madagascar";"Malawi";"Malaysia";"Maldives";"Mali";"Malta";"Marshall Islands";
"Martinique";"Mauritania";"Mauritius";"Mayotte";"Mexico";"Micronesia";"Moldova";
"Monaco";"Mongolia";"Montserrat";"Morocco";"Mozambique";"Myanmar";"Namibia";
"Nauru";"Nepal";"Netherlands";"Netherlands Antilles";"New Caledonia";"New Zealand";
"Nicaragua";"Niger";"Nigeria";"Niue";"Norfolk Island";"North Korea";"Northern Marianas";
"Norway";"Oman";"Pakistan";"Palau";"Panama";"Papua New Guinea";"Paraguay";"Peru";
"Philippines";"Pitcairn Islands";"Poland";"Portugal";"Puerto Rico";"Qatar";
"Reunion";"Romania";"Russia";"Rwanda";"Sqo Tome and Principe";"Saint Helena";
"Saint Kitts and Nevis";"Saint Lucia";"Saint Pierre and Miquelon";
"Saint Vincent and the Grenadines";"Samoa";"San Marino";"Saudi Arabia";"Senegal";
"Seychelles";"Sierra Leone";"Singapore";"Slovakia";"Slovenia";"Solomon Islands";
"Somalia";"South Africa";"South Georgia and the South Sandwich Islands";"South Korea";
"Spain";"Sri Lanka";"Sudan";"Suriname";"Svalbard and Jan Mayen";"Swaziland";"Sweden";
"Switzerland";"Syria";"Taiwan";"Tajikistan";"Tanzania";"Thailand";"The Bahamas";
"The Gambia";"Togo";"Tokelau";"Tonga";"Trinidad and Tobago";"Tunisia";"Turkey";
"Turkmenistan";"Turks and Caicos Islands";"Tuvalu";"Virgin Islands";"Uganda";
"Ukraine";"United Arab Emirates";"United Kingdom";
"United States";"United States Minor Outlying Islands";"Uruguay";"Uzbekistan";
"Vanuatu";"Vatican City";"Venezuela";"Vietnam";"Wallis and Futuna";"Western Sahara";
"Yemen";"Yugoslavia";"Zambia";"Zimbabwe"]
// Set our view from the "main" layout resource
let countyList = new System.Collections.Generic.List<string>()
countyList.AddRange(countries)
Then we create an ArrayAdapter from the list of countries
let adapter = new ArrayAdapter(this.BaseContext, Resources.Layout.list_item, countyList)
this.ListAdapter <- adapter
We should also turn on the ListView’s TextFilter
this.ListView.TextFilterEnabled <- true
Then finally we can add the eventhandler to show a toast message of the item clicked
this.ListView.ItemClick.Add(fun (args : AdapterView.ItemClickEventArgs) ->
let myView = args.View :?> TextView
Toast.MakeText(this.BaseContext, myView.Text , ToastLength.Long).Show()
The code is available in GitHub
https://github.com/vb2ae/FSharpAndroidList