Android 在活动之间传递图像

Android 在活动之间传递图像,android,image,android-intent,firebase-realtime-database,Android,Image,Android Intent,Firebase Realtime Database,我会知道我的代码有什么问题: 当我在我的recyclerView中单击一个项目时,它只显示两个文本视图,但图像从未显示。 我知道错误在于图像是一个字符串,所以要获取图像,我不能在第二个活动中使用“getIntExtra”方法。但我不知道如何更正此错误。 我的数据存储在firebase数据库中 这是我的班级模式: public class Dentist implements Parcelable { private String Nom; private String Adres

我会知道我的代码有什么问题: 当我在我的recyclerView中单击一个项目时,它只显示两个文本视图,但图像从未显示。 我知道错误在于图像是一个字符串,所以要获取图像,我不能在第二个活动中使用“getIntExtra”方法。但我不知道如何更正此错误。 我的数据存储在firebase数据库中

这是我的班级模式:

public class Dentist implements Parcelable {
    private String Nom;
    private String Adresse;
    private  String Image;

    protected Dentist(Parcel in) {
        Nom = in.readString ( );
        Adresse = in.readString ( );
        Image = in.readString ( );
    }

    public Dentist(String nom, String adresse ,String image) {
        this.Nom = nom;
        this.Adresse = adresse;
        this.Image = image;

    }

    public Dentist (){

    }

    public static final Creator<Dentist> CREATOR = new Creator<Dentist> ( ) {
        @Override
        public Dentist createFromParcel(Parcel in) {
            return new Dentist ( in );
        }

        @Override
        public Dentist[] newArray(int size) {
            return new Dentist[size];
        }
    };

    public String getNom() {
        return Nom;
    }

    public void setNom(String nom) {
        Nom = nom;
    }

    public String getAdresse() {
        return Adresse;
    }

    public void setAdresse(String adresse) {
        Adresse = adresse;
    }

    public String getImage() {
        return Image ;
    }
    public void setImage(String image) {
         Image= image;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString ( Nom );
        dest.writeString ( Adresse );
        dest.writeString ( Image );
    }
}
 public MyViewHolder(View itemView) {
                super ( itemView );
                TextNom = (TextView)itemView.findViewById ( R.id.nom_dentist );
                TextAdresse = (TextView)itemView.findViewById ( R.id.adresse_dentist );
                Image=(ImageView)itemView.findViewById(R.id.image);

                itemView.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View itemView) {
                        Intent intent = new Intent(itemView.getContext(), DetailsPage.class);

                        // get position
                        int pos = getAdapterPosition();

                        // check if item still exists
                        if(pos != RecyclerView.NO_POSITION){
                            Dentist clickedDataItem = listArray.get(pos);
                            intent.putExtra("nom",clickedDataItem.getNom ());
                            intent.putExtra("adresse",clickedDataItem.getAdresse ());
                            intent.putExtra ( "image", clickedDataItem.getImage ());
                            itemView.getContext().startActivity(intent);
                        }

                    }
                });


}
DetailNom = (TextView)findViewById ( R.id.detail_nom );
        DetailsAdresse = (TextView)findViewById ( R.id.detail_adresse );
        imageView=(ImageView)findViewById ( R.id.detail_image);
        DetailNom.setText ( "Nom :"+getIntent ().getStringExtra ( "nom" ) );
        DetailsAdresse.setText ( "Adresse :"+getIntent ().getStringExtra ( "adresse" ) );
        imageView.setImageResource ( getIntent ().getIntExtra ( "image", Integer.parseInt ( "00" ) ));
第二项活动:

public class Dentist implements Parcelable {
    private String Nom;
    private String Adresse;
    private  String Image;

    protected Dentist(Parcel in) {
        Nom = in.readString ( );
        Adresse = in.readString ( );
        Image = in.readString ( );
    }

    public Dentist(String nom, String adresse ,String image) {
        this.Nom = nom;
        this.Adresse = adresse;
        this.Image = image;

    }

    public Dentist (){

    }

    public static final Creator<Dentist> CREATOR = new Creator<Dentist> ( ) {
        @Override
        public Dentist createFromParcel(Parcel in) {
            return new Dentist ( in );
        }

        @Override
        public Dentist[] newArray(int size) {
            return new Dentist[size];
        }
    };

    public String getNom() {
        return Nom;
    }

    public void setNom(String nom) {
        Nom = nom;
    }

    public String getAdresse() {
        return Adresse;
    }

    public void setAdresse(String adresse) {
        Adresse = adresse;
    }

    public String getImage() {
        return Image ;
    }
    public void setImage(String image) {
         Image= image;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString ( Nom );
        dest.writeString ( Adresse );
        dest.writeString ( Image );
    }
}
 public MyViewHolder(View itemView) {
                super ( itemView );
                TextNom = (TextView)itemView.findViewById ( R.id.nom_dentist );
                TextAdresse = (TextView)itemView.findViewById ( R.id.adresse_dentist );
                Image=(ImageView)itemView.findViewById(R.id.image);

                itemView.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View itemView) {
                        Intent intent = new Intent(itemView.getContext(), DetailsPage.class);

                        // get position
                        int pos = getAdapterPosition();

                        // check if item still exists
                        if(pos != RecyclerView.NO_POSITION){
                            Dentist clickedDataItem = listArray.get(pos);
                            intent.putExtra("nom",clickedDataItem.getNom ());
                            intent.putExtra("adresse",clickedDataItem.getAdresse ());
                            intent.putExtra ( "image", clickedDataItem.getImage ());
                            itemView.getContext().startActivity(intent);
                        }

                    }
                });


}
DetailNom = (TextView)findViewById ( R.id.detail_nom );
        DetailsAdresse = (TextView)findViewById ( R.id.detail_adresse );
        imageView=(ImageView)findViewById ( R.id.detail_image);
        DetailNom.setText ( "Nom :"+getIntent ().getStringExtra ( "nom" ) );
        DetailsAdresse.setText ( "Adresse :"+getIntent ().getStringExtra ( "adresse" ) );
        imageView.setImageResource ( getIntent ().getIntExtra ( "image", Integer.parseInt ( "00" ) ));
试试这个

imageView.setImageURI(Uri.parse(getIntent ().getStringExtra ( "image","00")));
请尝试以下代码:

int image = Integer.parseInt(getIntent().getStringExtra(“image”));
imageView.setImageResource(image);

如果图像源是资源ID,请为图像使用
int
类型

imageView.setImageResource ( getIntent ().getIntExtra ( "image", 0));
如果图像源是URL字符串,请为图像使用
String
类型

imageView.setImageURI(Uri.parse(getIntent ().getStringExtra ( "image","00")));

使用毕加索或glide或其他库将图像加载到imageview中

例如:

 Picasso.with(context).load(getIntent ().getStringExtra ( "image")).into(imageView);

Bcoz您的图像值不是
int
its
string
。它显示:“getStringExtra(string)不能应用于(string,java.lang.string)”我使用了毕加索库:public void setImage(string image){Picasso.with(itemView.getContext()).load(image).into(image);}我的项目的所有图像都显示在我的recyclerView中,但当我单击某个项目时,该图像不会显示:问题出在intentimageView.setImageResource(getIntent().getIntExtra(“图像”,Integer.parseInt(“00”))中;//这里您没有使用毕加索库,对吗?我知道,但我如何纠正这个问题?谢谢为什么使用setImageResource()?这是为了设置drawable.picasso.with(context).load(getIntent().getStringExtra(“image”).into(imageView);应用程序是StopEdit显示:“getStringExtra(String)不能应用于(字符串,java.lang.String)