Как сделать SimpleAdapter синглтоном в Android?

Я понял, что если вы попытаетесь расширить класс SimpleAdapter, вы должны сделать конструктор общедоступным -

public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
    super(context, data, resource, from, to);
}

но это сделает так, чтобы кто-то (или я) мог случайно создать новый адаптер, верно?

я пытался сделать все данные и методы статическими в адаптере, но это просто не похоже на правильный способ сделать что-то...? извини, я не хочу быть слишком разборчивым. я просто не хочу, чтобы кто-то случайно создал экземпляр MySimpleAdapter

Как мне сделать этот класс синглтоном?

способ, которым я использую SimpleAdapter, заключается в том, что я использую его как контейнер для хранения всех объектов, которые мне нужны, в динамически уменьшающемся / растущем списке. В любой точке приложения должен быть только один такой контейнер. я правильно подхожу к этой проблеме?

2 ответа

Решение

Вы действительно не хотите делать адаптер статическим синглтоном. Причина этого заключается в том, что он имеет ссылку на контекст. Делая адаптер статическим, контекст никогда не будет собирать мусор.

Во всяком случае, вы хотите сохранить статический экземпляр вашего List, В каждом упражнении просто передайте ссылку на общий список и начинайте.

Почему вы должны сделать конструктор публичным? Игнорируя причины желания сделать его одноэлементным, вполне возможно объявить ваш класс, который расширяет SimpleAdapter, иметь приватный конструктор и открытый метод createInstance(), который реализует одноэлементный шаблон.

Другие вопросы по тегам