/// <summary> /// Gets the view for this position. /// </summary> /// <returns>The view.</returns> /// <param name="position">Position.</param> /// <param name="convertView">Convert view.</param> /// <param name="parent">Parent.</param> public override View GetView(int position, View convertView, ViewGroup parent) { // Try to reuse convertView if it's not null, otherwise inflate it from our item layout // This gives us some performance gains by not always inflating a new view // This will sound familiar to MonoTouch developers with UITableViewCell.DequeueReusableCell() var view = (convertView ?? _ctrl.LayoutInflater.Inflate(Resource.Layout.GameMainScreenItem, parent, false)) as RelativeLayout; view.SetMinimumHeight(_ctrl.FindViewById <ListView>(Resource.Id.listView).Height % Count); string header; string items; object image; _owner.GetContentEntry(position, out header, out items, out image); using (var textHeader = view.FindViewById <TextView>(Resource.Id.textHeader)) { textHeader.SetText(header, TextView.BufferType.Normal); } using (var textItems = view.FindViewById <TextView>(Resource.Id.textItems)) { textItems.SetText(items, TextView.BufferType.Normal); } using (var imageIcon = view.FindViewById <ImageView>(Resource.Id.imageIcon)) { if (image != null) { imageIcon.SetImageBitmap(null); imageIcon.SetImageBitmap((Bitmap)image); } } // Finally return the view return(view); }
void Refresh() { if (input == null) { // Normal dialog // TODO: HTML textDescription.Text = messageBox.Text; // Html.FromHtml(messageBox.HTML.Replace("<BR>", "<br>").Replace("<br>\n", "<br>").Replace("\n", "<br>")); textDescription.Gravity = Main.Prefs.TextAlignment.ToSystem(); textDescription.SetTextSize(global::Android.Util.ComplexUnitType.Sp, (float)Main.Prefs.TextSize); if (messageBox.Image != null) { imageView.SetImageBitmap(null); using (Bitmap bm = ctrl.ConvertMediaToBitmap(messageBox.Image)) { imageView.SetImageBitmap(null); imageView.SetImageBitmap(bm); } imageView.Visibility = ViewStates.Visible; } else { imageView.Visibility = ViewStates.Gone; } if (!String.IsNullOrEmpty(messageBox.FirstButtonLabel)) { btnView1.Visibility = ViewStates.Visible; btnView1.Text = messageBox.FirstButtonLabel; btnView1.LayoutChange += (object sender, View.LayoutChangeEventArgs e) => SetTextScale(btnView1); } else { btnView1.Visibility = ViewStates.Gone; } if (!String.IsNullOrEmpty(messageBox.SecondButtonLabel)) { btnView2.Visibility = ViewStates.Visible; btnView2.Text = messageBox.SecondButtonLabel; btnView2.LayoutChange += (object sender, View.LayoutChangeEventArgs e) => SetTextScale(btnView2); } else { btnView2.Visibility = ViewStates.Gone; } } else { // TODO: HTML textDescription.Text = input.Text; // Html.FromHtml(input.HTML.Replace("<BR>", "<br>").Replace("<br>\n", "<br>").Replace("\n", "<br>")); textDescription.Gravity = Main.Prefs.TextAlignment.ToSystem(); textDescription.SetTextSize(global::Android.Util.ComplexUnitType.Sp, (float)Main.Prefs.TextSize); if (input.Image != null) { using (Bitmap bm = ctrl.ConvertMediaToBitmap(input.Image)) { imageView.SetImageBitmap(bm); } imageView.Visibility = ViewStates.Visible; } else { imageView.Visibility = ViewStates.Gone; } if (input.InputType == InputType.MultipleChoice) { // Multiple choice dialog Spinner spinner = ctrl.FindViewById <Spinner> (Resource.Id.spinnerMulti); spinner.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs> (OnSpinnerItemSelected); ArrayAdapter <string> adapter = new ArrayAdapter <string>(this.Activity, Android.Resource.Layout.SimpleSpinnerItem, input.Choices.ToArray()); adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem); spinner.Adapter = adapter; } else { // Input dialog // ToDo: Clear text field editInput if (Main.Prefs.InputFocus) { editInput.RequestFocus(); ((InputMethodManager)ctrl.GetSystemService(Context.InputMethodService)).ShowSoftInput(editInput, ShowFlags.Implicit); } } } }