通过 Glide 或 Volley 库从服务器检索所有图像,并在列表视图中显示它们



我想通过 Glide 或 Volley 库从服务器检索所有图像,并在列表视图中显示它们。我该怎么做?

In Your 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);

您无需进行映像管理。滑翔可以在内部为您完成。

对于ListView,使用滑动以适配器getView()方法加载图像

对于Recyclerview,使用滑动以Adapter方法加载图像onBindViewHolder()

创建一个Extends ArrayAdapter<ImageView>的 java 类并将其用于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;
}
}

我想通过 Glide 或 凌空图书馆

这些库实际上用于在Android上加载和缓存图像

为了下载和显示所有这些图像,您可以使用json_encode()(例如在PHP上(从服务器端Json输出所有这些链接,然后在Android中解析json并循环访问链接的整个Json输出,然后通过Glide或Volley库显示图像。

编辑

这是它应该的样子,在 Android(客户端(内部RecyclerViewAdapter

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

关注: https://ledron.github.io/RecyclerView/

但是,您可以在Android上的ArrayList中单独添加这些链接,然后显示这些链接。按照教程进行操作,并使用适配器进行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();
}
}

最新更新