Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将图像从url加载到viewpager2?_Java_Android_Image_Android Viewpager2 - Fatal编程技术网

Java 如何将图像从url加载到viewpager2?

Java 如何将图像从url加载到viewpager2?,java,android,image,android-viewpager2,Java,Android,Image,Android Viewpager2,我在我的应用程序中使用ViewPager2来显示一些图像。当我使用drawable中的图像时,它工作得很好,但当我尝试从链接加载图像时,它显示错误。我是新手,所以请帮助我如何从url加载它们 它以items.size()的形式在适配器类中抛出错误;指空 项目类别 public class ImageSlider1_Item { private String imageURL; public ImageSlider1_Item(String imageURL){

我在我的应用程序中使用ViewPager2来显示一些图像。当我使用drawable中的图像时,它工作得很好,但当我尝试从链接加载图像时,它显示错误。我是新手,所以请帮助我如何从url加载它们

它以items.size()的形式在适配器类中抛出错误;指空

项目类别

public class ImageSlider1_Item {

    private String imageURL;

    public ImageSlider1_Item(String imageURL){
        this.imageURL = imageURL;
    }

    public String getImageURL (){
        return imageURL;
    }
}
public class ImageSlider1_Adapter extends RecyclerView.Adapter<ImageSlider1_Adapter.ImageSlider1_ViewHolder>{

    private List<ImageSlider1_Item> items;
    private ViewPager2 viewPager2;

   public ImageSlider1_Adapter(List<ImageSlider1_Item> items, ViewPager2 viewPager2) {
        this.items = items;
        this.viewPager2 = viewPager2;
    }

    @NonNull
    @Override
    public ImageSlider1_ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new ImageSlider1_ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.image_slider_layout, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull ImageSlider1_ViewHolder holder, int position) {

        holder.setImageView(items.get(position));
    }

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

    class ImageSlider1_ViewHolder extends RecyclerView.ViewHolder{

        private RoundedImageView imageView;

        ImageSlider1_ViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.imageSlide);
        }

        void setImageView(ImageSlider1_Item slider1Item){
            Glide.with(itemView.getContext())
                    .load(slider1Item.getImageURL())
                    .into(imageView);
        }
    }

}
适配器类

public class ImageSlider1_Item {

    private String imageURL;

    public ImageSlider1_Item(String imageURL){
        this.imageURL = imageURL;
    }

    public String getImageURL (){
        return imageURL;
    }
}
public class ImageSlider1_Adapter extends RecyclerView.Adapter<ImageSlider1_Adapter.ImageSlider1_ViewHolder>{

    private List<ImageSlider1_Item> items;
    private ViewPager2 viewPager2;

   public ImageSlider1_Adapter(List<ImageSlider1_Item> items, ViewPager2 viewPager2) {
        this.items = items;
        this.viewPager2 = viewPager2;
    }

    @NonNull
    @Override
    public ImageSlider1_ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new ImageSlider1_ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.image_slider_layout, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull ImageSlider1_ViewHolder holder, int position) {

        holder.setImageView(items.get(position));
    }

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

    class ImageSlider1_ViewHolder extends RecyclerView.ViewHolder{

        private RoundedImageView imageView;

        ImageSlider1_ViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.imageSlide);
        }

        void setImageView(ImageSlider1_Item slider1Item){
            Glide.with(itemView.getContext())
                    .load(slider1Item.getImageURL())
                    .into(imageView);
        }
    }

}
公共类ImageSlider1\u适配器扩展了RecyclerView.Adapter{
私人清单项目;
私有ViewPager2 ViewPager2;
公共图像幻灯片1_适配器(列表项,ViewPager2 ViewPager2){
这个项目=项目;
this.viewPager2=viewPager2;
}
@非空
@凌驾
public ImageSlider1_ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
返回新的ImageSlider1_ViewHolder(LayoutFlater.from(parent.getContext())。充气(R.layout.image_slider_layout,parent,false));
}
@凌驾
public void onBindViewHolder(@NonNull ImageSlider1_ViewHolder,int位置){
holder.setImageView(items.get(position));
}
@凌驾
public int getItemCount(){
返回items.size();
}
类ImageSlider1\u ViewHolder扩展了RecyclerView.ViewHolder{
私有RoundImageView图像视图;
ImageSlider1_视图持有者(@NonNull View itemView){
超级(项目视图);
imageView=itemView.findViewById(R.id.imageSlide);
}
void setImageView(ImageSlider1\u项目Slider1项){
Glide.with(itemView.getContext())
.load(slider1Item.getImageURL())
.进入(图像视图);
}
}
}
主要活动

FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
         firebaseFirestore.collection("Image Sliders").document("Whats New").get()
                 .addOnSuccessListener(documentSnapshot -> {
                     slider1_items = new ArrayList<>();
                     slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image1")));
                     slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image2")));
                     slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image3")));
                     slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image4")));
                     slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image5")));
                 });
       ViewPager2 viewPager2 = view.findViewById(R.id.imageSlider_1);
       viewPager2.setAdapter(new ImageSlider1_Adapter(slider1_items, viewPager2));

       viewPager2.setClipToPadding(false);
       viewPager2.setClipChildren(false);
       viewPager2.setOffscreenPageLimit(3);
       viewPager2.getChildAt(0).setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER);
       CompositePageTransformer compositePageTransformer = new CompositePageTransformer();
       compositePageTransformer.addTransformer(new MarginPageTransformer(40));
       viewPager2.setPageTransformer(compositePageTransformer);
firebaseforestore-firebaseforestore=firebaseforestore.getInstance();
firebaseFirestore.collection(“图像滑块”).document(“Whats New”).get()
.addOnSuccessListener(文档快照->{
slider1_items=新建ArrayList();
添加(新的ImageSlider1_项(documentSnapshot.getString(“Image1”));
添加(新的ImageSlider1_项(documentSnapshot.getString(“Image2”)));
添加(新的ImageSlider1_项(documentSnapshot.getString(“Image3”)));
添加(新的ImageSlider1_项(documentSnapshot.getString(“Image4”)));
添加(新的ImageSlider1_项(documentSnapshot.getString(“Image5”)));
});
ViewPager2 ViewPager2=view.findViewById(R.id.imageSlider_1);
setAdapter(新的ImageSlider1_适配器(slider1_项,viewPager2));
viewPager2.setClipToPadding(false);
viewPager2.setClipChildren(false);
viewPager2.setOffscreenPageLimit(3);
viewPager2.getChildAt(0.setOverScrollMode(RecyclerView.OVER\u SCROLL\u NEVER);
CompositePagetTransformer CompositePagetTransformer=新的CompositePagetTransformer();
复合变压器。添加变压器(新边缘变压器(40));
viewPager2.setPageTransformer(复合变压器);

第一次按如下方式更换适配器:

public class ImageSlider1_Adapter extends RecyclerView.Adapter<ImageSlider1_Adapter.ImageSlider1_ViewHolder>{

private List<ImageSlider1_Item> items;
private Context context;

public ImageSlider1_Adapter(List<ImageSlider1_Item> items) {
    this.items = items;
}

public void setItems(List<ImageSlider1_Item> items) {
    this.items = items;
}


@NonNull
@Override
public ImageSlider1_ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    context = parent.getContext();
    return new ImageSlider1_ViewHolder(LayoutInflater.from(context).inflate(R.layout.image_slider_layout, parent, false));
}

@Override
public void onBindViewHolder(@NonNull ImageSlider1_ViewHolder holder, int position) {

    holder.setImageView(items.get(position));
}

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

class ImageSlider1_ViewHolder extends RecyclerView.ViewHolder{

    private RoundedImageView imageView;

    ImageSlider1_ViewHolder(@NonNull View itemView) {
        super(itemView);
        imageView = itemView.findViewById(R.id.imageSlide);
    }

    void setImageView(ImageSlider1_Item slider1Item){
       //custom settings for fast loading image
       RequestOptions options = new RequestOptions()
            .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
            .centerCrop()
            .priority(Priority.HIGH)
            .format(DecodeFormat.PREFER_RGB_565);

       Glide.with(context)
            .applyDefaultRequestOptions(options)
            .load(slider1Item.getImageURL())
            .thumbnail(0.4f)
            .into(imageView);
    }
}
公共类ImageSlider1\u适配器扩展了RecyclerView.Adapter{
私人清单项目;
私人语境;
公共ImageSlider1_适配器(列表项){
这个项目=项目;
}
公共无效集合项(列表项){
这个项目=项目;
}
@非空
@凌驾
public ImageSlider1_ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
context=parent.getContext();
返回新的ImageSlider1_ViewHolder(LayoutFlater.from(上下文)。充气(R.layout.image_slider_layout,parent,false));
}
@凌驾
public void onBindViewHolder(@NonNull ImageSlider1_ViewHolder,int位置){
holder.setImageView(items.get(position));
}
@凌驾
public int getItemCount(){
返回items.size();
}
类ImageSlider1\u ViewHolder扩展了RecyclerView.ViewHolder{
私有RoundImageView图像视图;
ImageSlider1_视图持有者(@NonNull View itemView){
超级(项目视图);
imageView=itemView.findViewById(R.id.imageSlide);
}
void setImageView(ImageSlider1\u项目Slider1项){
//快速加载图像的自定义设置
RequestOptions=newrequestoptions()
.diskCacheStrategy(diskCacheStrategy.AUTOMATIC)
.centerCrop()
.优先级(优先级高)
.格式(解码格式。首选_RGB_565);
带(上下文)滑动
.applyDefaultRequestOptions(选项)
.load(slider1Item.getImageURL())
.缩略图(0.4f)
.进入(图像视图);
}
}
}

活动的下一步

//1st initialize list & adapter
 private List<ImageSlider1_Item> slider1_items = new ArrayList<>();
 private ImageSlider1_Adapter adapter;


 //2sd initialize views
  ViewPager2 viewPager2 = view.findViewById(R.id.imageSlider_1);
   viewPager2.setClipToPadding(false);
   viewPager2.setClipChildren(false);
   viewPager2.setOffscreenPageLimit(3);
   viewPager2.getChildAt(0).setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER);
   CompositePageTransformer compositePageTransformer = new CompositePageTransformer();
   compositePageTransformer.addTransformer(new MarginPageTransformer(40));
   viewPager2.setPageTransformer(compositePageTransformer);

   //3d remove ViewPager2 from adapter constructor -  no need for that
   //and initialize new adapter without viewPager2

   adapter = new ImageSlider1_Adapter(slider1_items);

   //next set adapter to ViewPager2
   viewPager2.setAdapter(adapter);


   FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
     firebaseFirestore.collection("Image Sliders").document("Whats New").get()
             .addOnSuccessListener(documentSnapshot -> {
                 slider1_items.clear();
                 slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image1")));
                 slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image2")));
                 slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image3")));
                 slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image4")));
                 slider1_items.add(new ImageSlider1_Item(documentSnapshot.getString("Image5")));
                 //next setList to adapter
                 adapter.setItems(slider1_items);
                 adapter.notifyDataSetChanged();

             });
//第一次初始化列表和适配器
私有列表滑块1_items=new ArrayList();
专用ImageSlider1_适配器;
//2sd初始化视图
ViewPager2 ViewPager2=view.findViewById(R.id.imageSlider_1);
viewPager2.setClipToPadding(false);
viewPager2.setClipChildren(false);
viewPager2.setOffscreenPageLimit(3);
viewPager2.getChildAt(0.setOverScrollMode(RecyclerView.OVER\u SCROLL\u NEVER);
CompositePagetTransformer CompositePagetTransformer=新的CompositePagetTransformer();
复合变压器。添加变压器(新边缘变压器(40));
viewPager2.setPageTransformer(复合变压器);
//3d从适配器构造函数中删除ViewPager2-无需这样做
//并在不使用viewPager2的情况下初始化新适配器
适配器=新图像滑块1\u适配器(滑块1\u项);
//下一步将适配器设置为ViewPager2
viewPager2.setAdapter(适配器);
FirebaseFirestore=FirebaseFirestore.getInstance();
firebaseFirestore.collection(“图像滑块”).document(“Whats New”).get()
.addOnSuccessListener(文档快照->{
滑块1_items.clear();
添加(新的ImageSlider1_项(documentSnapshot.getString(“Image1”));
滑块1\u项。添加(新图像)滑块1\u项(文档