Java 如何将图像从url加载到viewpager2?
我在我的应用程序中使用ViewPager2来显示一些图像。当我使用drawable中的图像时,它工作得很好,但当我尝试从链接加载图像时,它显示错误。我是新手,所以请帮助我如何从url加载它们 它以items.size()的形式在适配器类中抛出错误;指空 项目类别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){
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项(文档