如何将Firebase中的图像检索到android应用程序中?
我正在制作一个Android应用程序,从firebase获取数据并显示它。我成功地从firebase数据库获取了文本数据,但没有显示我的图像。我坚信问题在于下面的适配器代码如何将Firebase中的图像检索到android应用程序中?,android,firebase,Android,Firebase,我正在制作一个Android应用程序,从firebase获取数据并显示它。我成功地从firebase数据库获取了文本数据,但没有显示我的图像。我坚信问题在于下面的适配器代码 package ke.co.catalystseller; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import
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();
}
}
包ke.co.Catalyst卖方;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.squareup.picasso.picasso;
导入java.util.List;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
公共类ImageAdapter扩展了RecyclerView.Adapter{
私有上下文;
私人列表多路复用器;
公共ImageAdapter(上下文、列表上载){
mContext=上下文;
mUploads=上传;
}
公共类ImageViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图文本视图名称;
公共影像视图;
公共文本视图供应商;
公共文本视图供应商联系人;
公共ImageViewHolder(@NonNull View itemView){
超级(项目视图);
textViewName=itemView.findViewById(R.id.item\u名称);
vendor=itemView.findviewbyd(R.id.seller\u name);
vendorContact=itemView.findViewById(R.id.ucontact);
imageView=itemView.findViewById(R.id.m_image_view);
}
}
@非空
@凌驾
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
视图v=LayoutFlater.from(mContext)。充气(R.layout.image_项,父项,false);
返回新的ImageViewHolder(v);
}
@凌驾
public void onBindViewHolder(@NonNull ImageViewHolder,int位置){
Uploads uploadCurrent=mUploads.get(位置);
holder.textViewName.setText(uploadCurrent.getName());
holder.vendor.setText(uploadCurrent.getUser());
holder.vendorContact.setText(uploadCurrent.getContact());
毕加索(McContext)
.load(uploadCurrent.getImageUrl())
.占位符(R.mipmap.ic_启动器)
.fit()
.centerCrop()
.插入(支架.图像视图);
}
@凌驾
public int getItemCount(){
返回mUploads.size();
}
}
非常感谢您提供的任何帮助试试这个
将此方法放在视图保持架中
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);
}
});
}
在困境中试试这个
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());
}
完整代码
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();
}
}
包ke.co.Catalyst卖方;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.squareup.picasso.picasso;
导入java.util.List;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
公共类ImageAdapter扩展了RecyclerView.Adapter{
私有上下文;
私人列表多路复用器;
公共ImageAdapter(上下文、列表上载){
mContext=上下文;
mUploads=上传;
}
公共类ImageViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图文本视图名称;
公共影像视图;
公共文本视图供应商;
公共文本视图供应商联系人;
公共ImageViewHolder(@NonNull View itemView){
超级(项目视图);
textViewName=itemView.findViewById(R.id.item\u名称);
vendor=itemView.findviewbyd(R.id.seller\u name);
vendorContact=itemView.findViewById(R.id.ucontact);
imageView=itemView.findViewById(R.id.m_image_view);
}
public void setImage(最终上下文c,最终字符串imageUrl){
最终ImageView ImageView=(ImageView)mView.findViewById(R.id.m_image_view);
//这将在下载一次后脱机保存图像
毕加索(c)
.load(图像URL)
.networkPolicy(networkPolicy.OFFLINE)
.调整大小(400300)
.错误(R.drawable.ic\U错误\U黑色\U 24dp)
.centerCrop()
.into(imageView,新回调(){
@凌驾
成功时的公共无效(){
}
@凌驾
公开无效{
//如果缓存失败,请重试
毕加索(c)
.load(图像URL)
.错误(R.drawable.ic\U错误\U黑色\U 24dp)
.进入(图像视图);
}
});
}
}
@非空
@凌驾
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
视图v=LayoutFlater.from(mContext)。充气(R.layout.image_项,父项,false);
返回新的ImageViewHolder(v);
}
@凌驾
public void onBindViewHolder(@NonNull ImageViewHolder,int位置){
Uploads uploadCurrent=mUploads.get(位置);
holder.textViewName.setText(uploadCurrent.getName());
holder.vendor.setText(uploadCurrent.getUser());
holder.vendorContact.setText(uploadCurrent.getContact());
setImage(getApplicationContext(),uploadCurrent.getImageUrl());
}
@凌驾
public int getItemCount(){
返回mUploads.size();
}
}
试试这个
将此方法放在视图保持架中
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);
}
});
}
在困境中试试这个
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());
}
完整代码
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();
}
}
包ke.co.Catalyst卖方;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.squareup.picasso.picasso;
导入java.util.List;
导入androidx.annotation.NonNull;
导入androidx.recyclerview.widget.recyclerview;
聚氨基甲酸酯