2015-11-24 3 views
1
public class ImageAdapter extends ArrayAdapter<ImageView> { 
    Context context; 
    String[] PosterList; 

    public ImageView(Context context, String[] PosterList){ 
     super(context, 0, PosterList); 
     this.context = context; 
     this.PosterList = PosterList; 
    } 
} 

Так что в фрагменте кода выше, является конструктором для пользовательского ArrayAdapter. Метод «супер» не может быть разрешен. Я не уверен, почему, учитывая, что написанная выше подпись метода соответствует одному из конструкторов на веб-сайте android для ArrayAdapter. Как я могу это исправить?Пользовательский ArrayAdapter, супер не может быть разрешен

Поскольку я использую Picasso для загрузки изображений в gridview, я копирую массив строк (которые на самом деле являются URL-адресами), поэтому они могут обрабатываться Picasso в методе getView и возвращать объект ImageView.

ответ

2

Изменить

public class ImageAdapter extends ArrayAdapter<ImageView> 
... 
    public ImageView(Context context, String[] PosterList) 

к (соответственно)

public class ImageAdapter extends ArrayAdapter<String> 
... 
    public ImageAdapter(Context context, String[] PosterList) 

Вы определяете неправильный конструктор.

+2

Кроме того, измените 'ArrayAdapter ' на 'ArrayAdapter '. – CommonsWare

+1

Кроме того, OP может избавиться от назначения поля 'String [] PosterList', поскольку это назначение уже выполняется через суперкласс, см. Здесь код https://android.googlesource.com/platform/frameworks/base/ +/refs/heads/master/core/java/android/widget/ArrayAdapter.java # 68 и все использования 'mObjects' содержит – petey

+0

@petey, но я думал, что это одна из тех хороших привычек программирования, не так ли? (Я имею в виду, что он мог отслеживать элементы ListView) –