J'utilise retrofit 1.9 pour extraire des données d'une API de repos pour les afficher dans recyclerview. Jusqu'à présent, je reçois toutes les informations nécessaires sur l'utilisateur. Maintenant, je veux aussi montrer l'image des utilisateurs sur ce recyclerview. Maintenant, pour l'information de l'utilisateur, j'ai une API. comme "https://sample.app.com/api/user". Dans cette API, je n'ai aucun champ d'image. pour recueillir l'image de l'utilisateur, j'ai une autre API comme "https://sample.app.com/api/profileimage/" + mail.J'essaie d'ajouter une image en utilisant 'com.squareup.picasso: picasso: 2.5.2'. Mais après avoir lancé le programme, je ne vois rien sur recyclerview.Comment régler l'image à partir d'une autre API à l'aide de Retrofit 1.9 dans recyclerview
Voici ma classe de modèle pour l'utilisateur. Je voudrais mentionner qu'aucune impage déposée n'est présente dans le fichier json.
utilisateur api
[
{
"_id": "588797978",
"dn": "CNdfgdfgdfg",
"sn": "Das",
"title": "title",
"givenName": "Tom",
"whenChanged": "20170623093215.0Z",
"company": "Company limited",
"name": "Soutrik Das",
"mail": "[email protected]",
"mobile": "+123456",
"updated_at": "2016-12-09T13:37:55.721Z"
},
...
]
Ma classe de modèle est
public class ColleagueModel {
public String _id,
dn,
givenName,
whenChanged,
name,
mail,
updatedAt,
sn,
title,
department,
company,
mobile;
..............
}
ima donnant une partie de adpater classe
@Override
public void onBindViewHolder(ColleagueHolder holder, int position) {
final ColleagueModel currentColleague = mColleague.get(position);
Picasso.with(holder.itemView.getContext());
holder.colleagueName.setText(currentColleague.name);
holder.companyName.setText(currentColleague.company);
holder.jobTitle.setText(currentColleague.title);
Picasso.with(holder.itemView.getContext()).load(Constants.HTTP.PHOTO_URL + currentColleague.mail).into(holder.colleaguePicture);
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i=new Intent(context,DetailMyColleague.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(/* here I want to send image*/)
i.putExtra("name",currentColleague.name);
i.putExtra("title",currentColleague.title);
i.putExtra("company",currentColleague.company);
i.putExtra("mobile",currentColleague.mobile);
i.putExtra("mail",currentColleague.mail);
i.putExtra("department",currentColleague.department);
context.startActivity(i);
}
});
URL de base
public class Constants {
public static final class HTTP {
public static final String BASE_URL = "https://sample.app.com";
public static final String PHOTO_URL = BASE_URL + "/api/profileimage/";
}
public static final class DATABASE{
}
}
une partie de l'activité de détail
Intent intent = getIntent();
//RECEIVE DATA
name = intent.getExtras().getString("name");
int profileImage = intent.getIntExtra("image", 0);
String title = intent.getExtras().getString("title");
String company = intent.getExtras().getString("company");
mobile = intent.getExtras().getString("mobile");
String mail = intent.getExtras().getString("mail");
String dept = intent.getExtras().getString("department");
//BIND DATA
_profilePic.setImageResource(profileImage);
_profileName.setText(name);
_colleagueName.setText(name);
_mobile.setText(mobile);
_mobile.setOnClickListener(this);
_email.setText(mail);
_email.setOnClickListener(this);
_company.setText(company);
_department.setText(dept);
_jobRole.setText(title);
service Api
public interface ColleagueApiService {
@GET("/api/users")
void getColleague(Callback<String> flowers);
}
de classe Titulaire
@Override
public int getItemCount() {
return mColleague.size();
}
public class ColleagueHolder extends RecyclerView.ViewHolder{
public CardView cardView;
public ImageView colleaguePicture;
public TextView colleagueName;
public TextView companyName;
public TextView jobTitle;
public ColleagueHolder(View itemView) {
super(itemView);
colleaguePicture= itemView.findViewById(R.id.colleague_picture);
colleagueName= itemView.findViewById(R.id.colleague_name);
companyName= itemView.findViewById(R.id.company_name);
jobTitle= itemView.findViewById(R.id.job_title);
cardView= itemView.findViewById(R.id.cardview_user);
}
}
Comment puis-je ajouter une image dans recyclerview en utilisant picasso.
Log Cat
08-20 11:57:03.798 1581-2750/? I/ActivityManager: START u0 {cmp=demo.app.com.bluapp_client_and/.activity.myColleague.MyColleaguesPage} from uid 10164 on display 0
08-20 11:57:03.869 29300-29304/demo.app.com.bluapp_client_and I/art: Do partial code cache collection, code=54KB, data=55KB
08-20 11:57:03.871 29300-29304/demo.app.com.bluapp_client_and I/art: After code cache collection, code=45KB, data=50KB
08-20 11:57:03.871 29300-29304/demo.app.com.bluapp_client_and I/art: Increasing code cache capacity to 256KB
08-20 11:57:03.882 29300-29332/demo.app.com.bluapp_client_and D/EGL_emulation: eglMakeCurrent: 0xa4c164a0: ver 2 0 (tinfo 0xa49536c0)
08-20 11:57:03.970 29300-29300/demo.app.com.bluapp_client_and D/Controller: Error :: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 12 path $
08-20 11:57:03.970 1581-1601/? I/ActivityManager: Displayed demo.app.com.bluapp_client_and/.activity.myColleague.MyColleaguesPage: +168ms
08-20 11:57:04.355 1581-1797/? I/WindowManager: Destroying surface Surface(name=demo.app.com.bluapp_client_and/demo.app.com.bluapp_client_and.activity.main.MainOptionPage) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.AppWindowToken.destroySurfaces:363 com.android.server.wm.AppWindowToken.notifyAppStopped:389 com.android.server.wm
pouvez-vous obtenir l'image de cette url ** Constantes. HTTP.PHOTO_URL + currentColleague.mail **, vérifiez-vous dans le navigateur Web? –
@BhuvaneshBs Oui sur webbrowser Je reçois l'image –
https: //.../api/profileimage/mailadess. Mais je n'avais aucun champ sur la classe de modèle. parce que l'image api est totalement différente. Dans l'API utilisateur, je n'ai pas d'option impage. comment puis-je combiner cette image à cette information de l'utilisateur –