Я пытаюсь использовать библиотеку Picasso, чтобы загружать плакаты фильма из API TMDB в виде сетки с помощью AsyncTask, поэтому я использовал пользовательский адаптер, но ничего не происходит, поэтому я попытался загрузить одно твердокодированное изображение, но он не сделал Нагрузка тоже. Я поставил точку останова в методе getView моего пользовательского адаптера и заметил, что он никогда не срабатывает ... Итак, что я делаю неправильно здесь?Android, как использовать пикассо с GridView?
Это мой пользовательский адаптер:
public class MoviesAdapter extends ArrayAdapter<MovieEntity> {
private Context context;
private List<MovieEntity> movies = new ArrayList<>();
public MoviesAdapter(Context context, int resource, int textViewResourceId, List<MovieEntity> objects) {
super(context, resource, textViewResourceId, objects);
this.context = context;
}
@Override
public int getCount() {
return movies.size();
}
@Override
public MovieEntity getItem(int position) {
return movies.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView view = (ImageView) convertView;
if (view == null) {
view = new ImageView(context);
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
MovieEntity movieEntity = getItem(position);
Picasso.with(context)
.load(movieEntity.moviePoster)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.fit()
.tag(context)
.into(view);
return view;
}
}
и это мой код в методе "onCreateView":
mMoviesAdapter = new MoviesAdapter(getActivity(),
R.layout.grid_view_image_item,
R.id.img_movie_poster,
new ArrayList<MovieEntity>());
GridView gridView = (GridView) rootVoew.findViewById(R.id.grid_movies);
gridView.setAdapter(mMoviesAdapter);
Данные создаются в методе AsyncTask onPostExecute как это:
protected void onPostExecute(String[] strings) {
if (strings != null) {
mMoviesAdapter.clear();
mMoviesAdapter.addAll(strings);
}
}
Что я делаю неправильно здесь, что в моем режиме сетки нет изображений?
К сожалению, я случайно скопирована из другого проекта, это тот же самый код, но другое название. Я исправил его как правильное имя «mMoviesAdapter». Согласно документации, метод addAll по умолчанию вызывает «notifyDataSetChanged», если вы не укажете «mNotifyOnChange» как false. –
работал ...? – RajeshVijayakumar
Нет, я просто скопировал это неправильно в моем вопросе ... Я думаю, это потому, что метод getCount возвращает 0, но почему ??? –