Databinding a ListView with Mono for Android: Listing 2
Processing the Twitter request.
void ProcessRestJsonLINQHttpResponse(IAsyncResult iar)
{
System.Collections.Generic.List<Tweet> twt = new System.Collections.Generic.List<Tweet>();
try
{
HttpWebRequest request = (HttpWebRequest)iar.AsyncState;
HttpWebResponse response;
response = (HttpWebResponse)request.EndGetResponse(iar);
System.IO.StreamReader strm = new System.IO.StreamReader(
response.GetResponseStream());
var jsResults = System.Json.JsonArray.Load(strm)["results"];
for(int i = 0; i < jsResults.Count; i++)
{
twt.Add(new Tweet(){ Status = jsResults[i]["text"].ToString(),
StatusDate = jsResults[i]["created_at"].ToString(),
StatusId = jsResults[i]["id"].ToString(),
ProfileImage = jsResults[i]["profile_image_url"].ToString().Replace("\"", String.Empty) });
}
//this.RunOnUiThread(() => {tv.Text = Convert.ToString("records: " + twt.Count.ToString();}));
Android.Util.Log.Debug("http response", "finished");
//Find the listview reference
var listView = FindViewById<ListView>(Resource.Id.listView);
//Create our adapter
this.RunOnUiThread(() =>
{
listAdapter = new CustomListAdapter(this, twt);
//Hook up our adapter to our ListView
listView.Adapter = listAdapter;
});
//Wire up the click event
listView.ItemClick += HandleItemClick;
}
catch (System.Exception sysExc)
{
Android.Util.Log.Error("http response", "Exception: " + sysExc.Message);
}
}
About the Author
Wallace (Wally) B. McClure has authored books on iPhone programming with Mono/Monotouch, Android programming with Mono for Android, application architecture, ADO.NET, SQL Server and AJAX. He's a Microsoft MVP, an ASPInsider and a partner at Scalable Development Inc. He maintains a blog, and can be followed on Twitter.