Android 在活动之间传递图像
我会知道我的代码有什么问题: 当我在我的recyclerView中单击一个项目时,它只显示两个文本视图,但图像从未显示。 我知道错误在于图像是一个字符串,所以要获取图像,我不能在第二个活动中使用“getIntExtra”方法。但我不知道如何更正此错误。 我的数据存储在firebase数据库中 这是我的班级模式: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
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
itsstring
。它显示:“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)