если вы хотите переопределить метод, используйте ключевое слово abstract
public abstract class AlertDialogActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alert_dialog);
showAlertDialog(AlertDialogActivity.this);
}
public abstract void showAlertDialog(final Context context) {
// 1. Instantiate an <code><a href="/reference/android/app/AlertDialog.Builder.html">AlertDialog.Builder</a></code> with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
// 2. Chain together various setter methods to set the dialog characteristics
builder.setMessage("How are you?")
.setTitle("Hello");
// 3. Get the <code><a
href="/reference/android/app/AlertDialog.html">AlertDialog</a></code> from <code><a
href="/reference/android/app/AlertDialog.Builder.html#create()">create()</a></code>
AlertDialog dialog = builder.create();
dialog.show();
}
Это выглядит НАМНОГО БОЛЕЕ ПРОСТЫМ, если Вы спрашиваете меня. Это работает ОТЛИЧНО на меня.
Вы могли использовать Бросок () для изменения, он к IList тогда использует OrderBy ():
var ordered = theIList.Cast<T>().OrderBy(e => e);
, ГДЕ T является типом, например, Моделью. Сотрудник или Плагин. ContactService. Общий. Свяжитесь
Тогда, можно использовать для цикла и его СДЕЛАННОГО.
ObservableCollection<Plugin.ContactService.Shared.Contact> ContactItems= new ObservableCollection<Contact>();
foreach (var item in ordered)
{
ContactItems.Add(item);
}
using System.Linq;
var yourList = SomeDAO.GetRandomThings();
yourList.ToList().Sort( (thing, randomThing) => thing.CompareThisProperty.CompareTo( randomThing.CompareThisProperty ) );
Красиво! Гетто.
Я нашел эту ветку, пока искал решение к точной проблеме, описанной в исходном сообщении. Однако ни один из ответов полностью не соответствовал моей ситуации. Ответ Броуди был довольно близок. Вот моя ситуация и решение, которое я нашел.
У меня есть два списка IList одного и того же типа, возвращенные NHibernate, и они объединили два списка IList в один, отсюда и необходимость сортировки.
Как сказал Броуди, я реализовал ICompare для объекта (ReportFormat), который является типом моего IList:
public class FormatCcdeSorter:IComparer<ReportFormat>
{
public int Compare(ReportFormat x, ReportFormat y)
{
return x.FormatCode.CompareTo(y.FormatCode);
}
}
Затем я конвертирую объединенный IList в массив того же типа:
ReportFormat[] myReports = new ReportFormat[reports.Count]; //reports is the merged IList
Затем сортирую массив:
Array.Sort(myReports, new FormatCodeSorter());//sorting using custom comparer
Поскольку одномерный массив реализует интерфейс System.Collections.Generic.IList
, массив можно использовать так же, как исходный IList.