简体   繁体   English

如何将 Firebase 中的图像检索到我的 android 应用程序中?

[英]How do i retrieve images from Firebase into my android app?

i'm creaating an andoid app that fetches data from firebase and displays it.我正在创建一个从 firebase 获取数据并显示它的 Android 应用程序。 I successfully fetched text data from the firebase database but my images are not appearing.我成功地从 firebase 数据库中获取了文本数据,但我的图像没有出现。 i strongly believe that the problem is with by adapter code below我坚信问题出在下面的适配器代码上

package ke.co.catalystseller;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.List;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
    private Context mContext;
    private List<Uploads> mUploads;

    public ImageAdapter(Context context, List<Uploads> uploads){
        mContext = context;
        mUploads = uploads;
    }

    public class ImageViewHolder extends RecyclerView.ViewHolder{
        public TextView textViewName;
        public ImageView imageView;
        public TextView vendor;
        public TextView vendorContact;

        public ImageViewHolder(@NonNull View itemView) {
            super(itemView);
            textViewName = itemView.findViewById(R.id.item_name);
            vendor = itemView.findViewById(R.id.seller_name);
            vendorContact = itemView.findViewById(R.id.ucontact);
            imageView = itemView.findViewById(R.id.m_image_view);
        }
    }

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(mContext).inflate(R.layout.image_item,parent,false);
        return new ImageViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
        Uploads uploadCurrent = mUploads.get(position);
        holder.textViewName.setText(uploadCurrent.getName());
        holder.vendor.setText(uploadCurrent.getUser());
        holder.vendorContact.setText(uploadCurrent.getContact());
        Picasso.with(mContext)
                .load(uploadCurrent.getImageUrl())
                .placeholder(R.mipmap.ic_launcher)
                .fit()
                .centerCrop()
                .into(holder.imageView);

    }

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

any assistance will be highly appreciated任何帮助将不胜感激

Try this尝试这个

Put this method inside your view holder将此方法放在您的视图持有者中

 public void setImage(final Context c , final String imageUrl){

        final ImageView imageView = (ImageView)mView.findViewById(R.id.m_image_view);

        // This will save the image offline after downloading it once

        Picasso.with(c)
                .load(imageUrl)
                .networkPolicy(NetworkPolicy.OFFLINE)
                .resize(400, 300)
                .error(R.drawable.ic_error_black_24dp)
                .centerCrop()
                .into(imageView, new Callback() {
                    @Override
                    public void onSuccess() {
                    }

                    @Override
                    public void onError() {
                        // Try again if cache failed
                        Picasso.with(c)
                                .load(imageUrl)
                                .error(R.drawable.ic_error_black_24dp)
                                .into(imageView);
                    }
                });

    }

In the bind try this在绑定中试试这个

  protected void onBindViewHolder(@NonNull MyViewHolder holder, int position) {


                    Uploads uploadCurrent = mUploads.get(position);
                    holder.textViewName.setText(uploadCurrent.getName());
                    holder.vendor.setText(uploadCurrent.getUser());
                    holder.vendorContact.setText(uploadCurrent.getContact());

                holder.setImage(getApplicationContext(),uploadCurrent.getImageUrl());




            }

Full code完整代码

package ke.co.catalystseller;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.List;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
    private Context mContext;
    private List<Uploads> mUploads;

    public ImageAdapter(Context context, List<Uploads> uploads){
        mContext = context;
        mUploads = uploads;
    }

    public class ImageViewHolder extends RecyclerView.ViewHolder{
        public TextView textViewName;
        public ImageView imageView;
        public TextView vendor;
        public TextView vendorContact;

        public ImageViewHolder(@NonNull View itemView) {
            super(itemView);
            textViewName = itemView.findViewById(R.id.item_name);
            vendor = itemView.findViewById(R.id.seller_name);
            vendorContact = itemView.findViewById(R.id.ucontact);
            imageView = itemView.findViewById(R.id.m_image_view);
        }


 public void setImage(final Context c , final String imageUrl){

        final ImageView imageView = (ImageView)mView.findViewById(R.id.m_image_view);

        // This will save the image offline after downloading it once

        Picasso.with(c)
                .load(imageUrl)
                .networkPolicy(NetworkPolicy.OFFLINE)
                .resize(400, 300)
                .error(R.drawable.ic_error_black_24dp)
                .centerCrop()
                .into(imageView, new Callback() {
                    @Override
                    public void onSuccess() {
                    }

                    @Override
                    public void onError() {
                        // Try again if cache failed
                        Picasso.with(c)
                                .load(imageUrl)
                                .error(R.drawable.ic_error_black_24dp)
                                .into(imageView);
                    }
                });

    }


    }

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(mContext).inflate(R.layout.image_item,parent,false);
        return new ImageViewHolder(v);
    }

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

          Uploads uploadCurrent = mUploads.get(position);
                    holder.textViewName.setText(uploadCurrent.getName());
                    holder.vendor.setText(uploadCurrent.getUser());
                    holder.vendorContact.setText(uploadCurrent.getContact());

                holder.setImage(getApplicationContext(),uploadCurrent.getImageUrl());
    }

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

the problem i found actuallywas that i was uploading my images with the wrong url.我发现的问题实际上是我使用错误的 url 上传图像。 this made it difficult to access them since the address url i was using to fetch them was different from the uploaded one.这使得访问它们变得困难,因为我用来获取它们的地址 url 与上传的地址不同。 thanks谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在我的Android应用程序中,如何移动图像的位置? - In my Android app,how do I move the images from their position? 如何在 Android 中实时检索 Firebase 中的图像? - How to retrieve images from Firebase in realtime in Android? 如何从firebase中将此特定数据检索到我的android studio应用程序列表视图中? - How do I retrieve this specific data from firebase into my android studio application listview? 如何从Firebase数据库检索所有花瓶? - How do I retrieve all the vases from my Firebase Database? Android Studio:如何从 Firebase 检索特定数据? - Android studio : How do I retrieve specific data from Firebase? 如何从 Firebase 中的多个节点检索数据? Android - How do I retrieve data from multiple nodes in Firebase? Android 如何使用JSON从远程数据库检索数据并显示在android应用程序xml文件中? - How do i retrieve the data using JSON from the Remote Database and display in my android app xml file? 如何为我的 IOS 和 Android 应用优化图像? - How do i optimize images for my IOS & Android app? 如何从android的app文件夹中检索文件? - How can I retrieve a file from my app folder in android? 如何从我的 Android 应用程序的 firebase 中的键中获取值? - How do I fetch the value from a key in firebase for my android app?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM