在活动之间传递图像

时间:2018-01-22 10:24:20

标签: android image android-intent firebase-realtime-database

我知道我的代码有什么问题: 当我点击我的recyclerView中的一个项目时,它只向我显示两个textView,但图像永远不会显示。 我知道错误是图像是一个字符串,所以为了得到图像,我不能在第二个活动中使用方法“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" ) ));

4 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

试试这段代码:

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

答案 2 :(得分:0)

如果您的图片来源是资源ID,请使用int类型的图片。

imageView.setImageResource ( getIntent ().getIntExtra ( "image", 0));

如果您的图片来源是网址字符串,请使用String类型的图片。

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

答案 3 :(得分:0)

使用Picasso或滑动或其他库将图像加载到imageview中。

一个例子:

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