Получить все изображения с сервера через библиотеку Glide или Volley и показать их в виде списка - PullRequest
0 голосов
/ 22 сентября 2018

Я хочу получить все изображения с сервера через библиотеку Glide или Volley и показать их в виде списка.Как мне это сделать ?

Ответы [ 4 ]

0 голосов
/ 22 сентября 2018

Создайте класс Java, который Extends ArrayAdapter<ImageView>, и используйте его для ListView:

class imageadapter extends ArrayAdapter<ImageView> {

    private Context context;
    private LayoutInflater inflater;

    private String[] imageurls;

    imageadapter(Context context, String[] imageurls) {
        super(context, R.layout.imagelayout);
        this.imageurls = imageurls;
        this.context = context;
        this.inflater = LayoutInflater.from(context);
    }


    @SuppressLint({"ViewHolder", "SetTextI18n", "ClickableViewAccessibility"})
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

        View layout = convertView;
        Holder holder = null;
        if (layout == null) {
            layout = inflater.inflate(R.layout.imagelayout, parent, false);
            holder = new Holder();
            holder.imageView1 = layout.findViewById(R.id.imageView);
            holder.textView1 = layout.findViewById(R.id.textView);
            layout.setTag(holder);
        } else {
            holder = (Holder) layout.getTag();
        }

        Picasso.get().load(imageurls[position]).fit().into(holder.imageView1);
        holder.textView1.setText("Image:" + (position + 1));

        return layout;
    }

    @Override
    public int getCount() {
        return imageurls.length;
    }


    static class Holder {

        ImageView imageView1;
        TextView textView1;

    }

}
0 голосов
/ 22 сентября 2018

Я хочу получить все изображения с сервера через библиотеку Glide или Volley

Эти библиотеки используются для загрузки и кэширования изображений на Android на самом деле.

Чтобы загрузить и показать все эти изображения, вы можете сделать вывод Json всех этих ссылок со стороны сервера, используя json_encode() ( на PHP, например ), затем анализирует json в Android и просматривает весь вывод ссылок Json, затем показывает изображения в библиотеке Glide или Volley .

Редактировать :

Вот как это должно быть на Android (на стороне клиента) внутри RecyclerView Adapter:

Glide.with(myContext)
                    .load(mPosts.imgurl)
                    .apply(options)
                    .into(ViewHolder.imgShow)

Следуйте: https://ledron.github.io/RecyclerView/

Однако вы можете добавить эти ссылки отдельно в ArrayList на Android, а затем показать их тоже.Следуйте инструкциям и используйте адаптер для RecyclerView.

Пример Adapter:

public class Adapter  extends RecyclerView.Adapter<Adapter.ViewHolder>{

    ArrayList<String> urls;
    Context context;
    //constructor
    public Adapter(ArrayList<String> ImgUrl, Context context_)
    {
        this.urls = ImgUrl;
        this.context = context_;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder
    {
        private ImageView image;

        public ViewHolder(View v)
        {
          super(v);
          image =(ImageView)v.findViewById(R.id.img);
        }

        public ImageView getImage(){ return this.image;}
    }

    @Override
    public Adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem, parent, false);
        v.setLayoutParams(new RecyclerView.LayoutParams(1080,800));
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position)
    {
        Glide.with(this.context)
                .load(urls.get(position))
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(holder.getImage());
    }

    @Override
    public int getItemCount()
    {
        return urls.size();
    }

}
0 голосов
/ 22 сентября 2018

В вашем Gradle

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.8.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
}

Загрузить изображение в список

  String url = myUrls.get(position);

  GlideApp
    .with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);
0 голосов
/ 22 сентября 2018

Вам не нужно заниматься управлением изображениями.Glide может сделать это внутренне для вас.

Для ListView используйте glide для загрузки изображения в getView() методе адаптера

Для Recyclerview, используйте glide для загрузки изображения в onBindViewHolder() методе Adapter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...