Как сделать SimpleAdapter синглтоном в Android? - PullRequest
0 голосов
/ 03 февраля 2012

я понял, что если вы попытаетесь расширить класс 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 ]

1 голос
/ 03 февраля 2012

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

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

1 голос
/ 03 февраля 2012

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

...